请求jsonp数据

clipboard.png

clipboard.png

clipboard.png

不知道为何拿不下来数据!

阅读 3.4k
5 个回答

这个是后台返回数据的问题,jsonp与json返回的数据不一样,举栗子,jsonp返回的应该是

return $callback."(".json_encode($data).")";

$callback是返回调用的函数名称,注意json前后的小括号

大概明白楼主是个什么意思,估计是没弄明白jsonp的原理,只想跨域。

jsonp是一个利用script标签进行跨域请求的方法。
原理是利用scriptsrc属性去引用url,就像请求静态的JS资源一样去得到数据。
那么,你请求的资源,是会被直接运行的,所以,返回的数据就必须符合javascript语法才行。
如果只是简单的字符串,会被浏览器认为是不可执行的代码而报错。

jsonp的方法就是将数据包裹在一个函数内,例如
callback111({'msg':'nihao'})
然后,在客户端中也有一个函数callback111来接收数据,进行处理。
这样就能实现跨域。

但是,这样需要浏览器和服务器双方进行沟通才行,由浏览器告诉服务器回调函数名称,让服务器根据函数名进行生成jsonp的数据,否则,还是不可能实现跨域的。

问题没有描述清楚啊

用JQuery可以取得数据

    function callback(data) {
        console.log(data);
    }
    $(function () {
        $.ajax({
            type:"get",
            dataType:"jsonp",
            url:"http://api.asilu.com/weather/",
            jsonpCallback:"callback"
        });
    })

jsonp返回的时候是有回调函数的,如你请求的时候时候的callback函数为setUserList,后端返回数据为setUserList({"status":1})

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题