关于使用jsonp跨域获取数据的问题
想用jsopn跨域请求一个别的服务器上的json文件
别的服务器的json文件如图
但是报错
在网上查了下说是给json数据加个(),不报错了,但是数据还是出不来。请问怎么解决这个问题。是json数据格式的问题么。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
想用jsopn跨域请求一个别的服务器上的json文件
别的服务器的json文件如图
但是报错
在网上查了下说是给json数据加个(),不报错了,但是数据还是出不来。请问怎么解决这个问题。是json数据格式的问题么。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
jsonp的原理就是通过动态添加script标签来发送网络请求,服务端解析出请求参数(回调函数名,客户端所需数据两部分)再返回一个内容为函数执行的脚本,长相大概是:
callbackName(data)
。所以jsonp是需要服务端和前端达成一些协议的,比如如何告诉服务端回调参数的参数名是什么,你代码中
$.ajax
的jsonp
属性就会重写这个参数,比如你这里写了callback
,服务端就要读取callback
这个字段去解析出你需要的callbackName是什么,jsonpCallback
则是你期望的jsonp成功回调名,然后把这个方法提前定义好,请求成功了会去调用这个函数。不知道你的返回值和其它部分代码是怎么写的,这段代码里没看到message
函数的定义,另外既然写了success
回调好像就可以直接处理请求结果了,jsonpCallback
貌似就不需要定义了,另外就是你的服务器如何解析回调名需要确认,所以可以尝试:和服务端沟通,对方是根据哪个参数判断回调名的,把
jsonp
属性改成那个参数。定义好
message
函数,把success
删掉;或者不定义message
,把jsonpCallback
删掉。服务器不支持跨域访问,所以你的jsonp他没做出响应,jsonp需要后台支持才可以的,并不是说任何一个网站的数据,你都能通过前台的jsonp获取数据那岂不是太不安全了,也可以iframe套from表单提交获取