jsonp跨域
为什么要 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(值)。