跨域返回的jsonp数据一定需要提供回调函数吗?
例如,从abc.com的一个脚本成功返回的数据是下面这样的
{"xxx":"xxx"}
前面没有回调函数名称,
还有其他办法可以将它转为对象来使用吗?
------解决方案--------------------没有,根本取不到这个。
所谓JSONP,就是添加一个script标签,然后src指向那个url。
所以一定要是可执行的JS代码,只是返回{aa:11}肯定不是可执行的JS代码。
返回var data = {aa:11}或者test({aa:11})都可以,只是返回{aa:11}肯定是无解的。
------解决方案--------------------
不能跨域的原因是
域名
json是数据的一种格式
跨域是指 允许不允许你获取数据 数据的格式是不影响的
jsonp的原理 是因为js脚本的加载没有跨域 所以不用ajax 用一个 script标签 通过 他的src来访问 网站后台 这个src通常会加一个 jsonp=jsonpxxx的特别参数来标示调用的 函数名称
后台只要返回一个 这个函数名称包围的数据(json格式) 的字符串就可以了
当然调用者 会定义jsonxxx这个函数
------解决方案--------------------自己做代理或者使用yahoo的jsonp在线代理都行