欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jsonp跨域

程序员文章站 2022-03-06 10:37:33
为什么要 jsonp 跨域就不多讲了。 域名、端口、协议。三样有一处不同就需要跨域 我使用的是 jquery 的ajax $.ajax({ type:'get', dataType:'jsonp', jsonpCallback:'getMessage', url:'url', success:fun ......
为什么要 jsonp 跨域就不多讲了。  域名、端口、协议。三样有一处不同就需要跨域
 
我使用的是 jquery 的ajax
$.ajax({
      type:'get',
      dataType:'jsonp',
      jsonpCallback:'getMessage',
      url:'url',
         success:function(data){
             console.log(data);
           }
      })

这和很多网上的 jsonp 用法一样啊。  以前调用过但是一直报错。其实这样是能够请求到后台。后台也返回给你了。 但是就是请求不到。以往后台都是返回的json格式的。 

如:

 1 {'name':'123',age:1} 

但是 dataType 的格式是 jsonp 格式。后台返回格式是Json,ajax当然解析不出来。
 
jsonp是通过链接的参数来返回数据的。 ajax多了一个 jsonpCallback 的属性。 在返回数据的url参数后面中有 jsonpCallback:getMessage。
 
说了这么多后台应该返回什么数据。 
 
应该返回   getMessage(data) 。  这个data可以是任何类型的。(对象、字符串、数值、数值...);
 
这么看大家就知道这是什么了。回调函数  啊。
 
ajax相当于封装了一个函数。
 
getMessage(data){   //这个函数名对应  ajax的  jsonpCallback:'getMessage'

}

  

后台返回函数名调用这个函数。 ajax就能解析data数据了。
 
 
注意点:
 
后台一定要返回   jsonpCallback:getMessage 对应的函数名。
 
假设:
 
jsonpCallback:a,  那么后台返回的数据是 a(值)。