jsonp跨域请求简单说明

1.什么情况下会跨域?

说明:协议名、域名、端口号任何不同,都会跨域
URL 说明 是否允许通信
http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许
http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一域名下不同文件夹 允许
http://www.a.com:8080/a.jshttps://www.a.com/b.js 同一域名不同端口 不允许
http://www.a.com/a.jshttps://www.a.com/b.js 同一域名不同协议 不允许
http://www.a.com/a.jshttp://70.32.92.74/b.js 域名和域名对应IP 不允许
http://www.a.com/a.jshttp://script.a.com/b.js 主域相同,子域不同 不允许
http://www.a.com/a.jshttp://a.com/b.js 同一域名,不同二级域名 不允许
http://www.cnblogs.com/a.jshttp://www.a.com/b.js 不同域名 不允许

2.解决方案

$.ajax({
     url: "url地址",
     type: 'get',
     dataType: 'jsonp',
     jsonp: "callback",
     jsonpCallback:"jsonpCallback",//与后台返回的名称必须相同
     success: function (data) {
         console.log(data);
     },
     error:function(error){
          console.log(error);
     }
});
function jsonpCallback(data){
        console.log(data);
}

3.解释说明

1.这里jsonpCallback(可以自定义,但是得和*服务器返回的名称*保持一致)。
3.所以你只需在定义一个名为jsonpCallback 的function,请求成功后会调用这个函数。
4.jsonpCallback的function,写在调用ajax的函数之外。
5.后台返回的数据,要用回调函数包起来。
本来返回的数据:[{name:"zhangsan",age:18}]
使用jsonp请求后:jsonpCallback([{name:"zhangsan",age:18}])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,848评论 6 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,046评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 今日坚持了走路,还在走路的过程中想明白了一些事情 170718
    汪汪li阅读 2,738评论 0 0