jQuery中使用jsonp

在跨域使用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": "过客"
  }
)
0%