不知道为何拿不下来数据!
大概明白楼主是个什么意思,估计是没弄明白jsonp的原理,只想跨域。
jsonp
是一个利用script
标签进行跨域请求的方法。
原理是利用script
的src
属性去引用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"
});
})
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这个是后台返回数据的问题,jsonp与json返回的数据不一样,举栗子,jsonp返回的应该是
$callback是返回调用的函数名称,注意json前后的小括号