想用jsopn跨域请求一个别的服务器上的json文件
别的服务器的json文件如图
但是报错
在网上查了下说是给json数据加个(),不报错了,但是数据还是出不来。请问怎么解决这个问题。是json数据格式的问题么。
想用jsopn跨域请求一个别的服务器上的json文件
别的服务器的json文件如图
但是报错
在网上查了下说是给json数据加个(),不报错了,但是数据还是出不来。请问怎么解决这个问题。是json数据格式的问题么。
服务器不支持跨域访问,所以你的jsonp他没做出响应,jsonp需要后台支持才可以的,并不是说任何一个网站的数据,你都能通过前台的jsonp获取数据那岂不是太不安全了,也可以iframe套from表单提交获取
jsonp的原理就是通过动态添加script标签来发送网络请求,服务端解析出请求参数(回调函数名,客户端所需数据两部分)再返回一个内容为函数执行的脚本,长相大概是:
callbackName(data)
。所以jsonp是需要服务端和前端达成一些协议的,比如如何告诉服务端回调参数的参数名是什么,你代码中
$.ajax
的jsonp
属性就会重写这个参数,比如你这里写了callback
,服务端就要读取callback
这个字段去解析出你需要的callbackName是什么,jsonpCallback
则是你期望的jsonp成功回调名,然后把这个方法提前定义好,请求成功了会去调用这个函数。不知道你的返回值和其它部分代码是怎么写的,这段代码里没看到message
函数的定义,另外既然写了success
回调好像就可以直接处理请求结果了,jsonpCallback
貌似就不需要定义了,另外就是你的服务器如何解析回调名需要确认,所以可以尝试:和服务端沟通,对方是根据哪个参数判断回调名的,把
jsonp
属性改成那个参数。定义好
message
函数,把success
删掉;或者不定义message
,把jsonpCallback
删掉。