在跨域使用json数据的时候会遇到跨域问题,jQuery中就用jsonp来解决这个跨域。以前用的$.getJSON
,后来改成jsonp后一直报错说callback is not defined
未定义
$.getJSON("http://xxx.com.cn?callback=?",function (json) {
console.log( "success" );
});
后来查了一下 jQuery的官方文档, 1.5之后的版本改了,jsonp的使用参考 $.ajax()
然后直接使用ajax
指定callback
方法就可以了。
$.ajax({
type:"GET",
url:"xxx.com.cn",
dataType:"jsonp",
jsonp:"callback",
jsonpCallback:"callback",
success:function(json){
console.log( "success" );
}
});
- jsonp后面的
callback
值就是前面的http://xxx.com.cn?callback=?
中的callback
, - jsonpCallback后面的就是服务器json数据前的。
在说一下服务器的’jsonp’数所格式吧。不管服务是php、java还是静态的jsonp文件,只要发送的数据用callback(原始json数据)
包裹起来就行,这里的callback
与请求时的jsonpCallback
字段配置的一样就行了。
如原始json数据为:
{
"id":1,
"name": "过客"
}
jsonp数据为
callback(
{
"id":1,
"name": "过客"
}
)