0

0

jQuery+JSONP跨域请求如何实现

php中世界最好的语言

php中世界最好的语言

发布时间:2018-03-28 10:51:00

|

1346人浏览过

|

来源于php中文网

原创

这次给大家带来jQuery+JSONP跨域请求如何实现,实现jQuery+JSONP跨域请求的注意事项有哪些,下面就是实战案例,一起来看一下。

  JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的

  上面一段话来自百度百科,概念永远是那么抽象难懂,看例子才是最直观的表现。例子看的多了,领悟到那个点了,自然自己也会学着抽象的描述了。这就是为什么常说“学习知识是从薄到厚,又由厚到薄的过程”。好了扯远了。下面直接来看一个例子。

 

  问题:本地现有一个页面demo.html需要从http://localhost:3561/User/GetAllNames获取数据并展示。

  解答:由于问题中的两方不在同一服务器,故需要使用jsonp来跨域访问。

  ① 客户端编写

  客户端使用jQuery中提供的$.getJson方法来跨域访问。getJson有3个参数:

    I.   url:请求地址;

    II.  data:发送到服务端的参数;

    III. callback:成功时的回调函数

  getJson的使用方法和普通的$.get方法基本一致,不同的地方在于getJson需要在url后面的参数部分加上callback=?这一固定部分,jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。然后在回调函数中操作从异域返回的json对象,回调函数callback的参数即为该json对象。





  


  

      ② 服务端编写

      服务端的逻辑主要是将数据序列化为json字符串,然后封装成"callback(json)"的形式,callback为jQuery自动生成并传到服务端的函数名称。下面使用C#实现:

    public class UserController : Controller
    {
        public string GetAllNames(string callback)
      {
        string[] names = new string[] { "张三丰", "张无忌", "令狐冲", "杨过", "郭靖" };
        JavaScriptSerializer jss = new JavaScriptSerializer();
        string json = jss.Serialize(names);
        return string.Format("{0}({1})", callback, json);
      }
    }

      至此,便成功解决了问题。

     思考:如果服务端已经写死了callback(如:return string.Format("moty({0})", json);),那么客户端该怎么写呢?

     参考:

    $.ajax("http://localhost:3561/User/GetAllNames", {
      jsonpCallback: "moty",
      dataType: "jsonp",
      success: function(json) {
        for (var i = 0; i < json.length; i++) {
          $("#nameList").append("
  • " + json[i] + "
  • "); } } });

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    v-for索引index在html中的使用

    万彩商图
    万彩商图

    专为电商打造的AI商拍工具,快速生成多样化的高质量商品图和模特图,助力商家节省成本,解决素材生产难、产图速度慢、场地设备拍摄等问题。

    下载

    Vue打包之后文件路径出错如何处理

    相关专题

    更多
    Word 字间距调整方法汇总
    Word 字间距调整方法汇总

    本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

    2

    2025.12.24

    任务管理器教程
    任务管理器教程

    本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

    2

    2025.12.24

    AppleID格式
    AppleID格式

    本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

    0

    2025.12.24

    csgo视频观看入口合集
    csgo视频观看入口合集

    本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

    29

    2025.12.24

    yandex外贸入口合集
    yandex外贸入口合集

    本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

    58

    2025.12.24

    添加脚注通用方法
    添加脚注通用方法

    本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

    1

    2025.12.24

    重启电脑教程汇总
    重启电脑教程汇总

    本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

    3

    2025.12.24

    纸张尺寸汇总
    纸张尺寸汇总

    本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

    5

    2025.12.24

    Java Spring Boot 微服务实战
    Java Spring Boot 微服务实战

    本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

    1

    2025.12.24

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    jQuery 教程
    jQuery 教程

    共42课时 | 3.3万人学习

    HTML+CSS基础与实战
    HTML+CSS基础与实战

    共132课时 | 9.2万人学习

    tp6+adminlte搭建通用后台
    tp6+adminlte搭建通用后台

    共39课时 | 5.7万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号