没有JSONP的getJSON远程请求 - 服务器
问题描述:
我想从远程服务器调用JSON数据,但服务器不返回有效的JSONP形成的数据,只有有效的JSON数据。 (验证器确认)没有JSONP的getJSON远程请求 - 服务器
如果我使getJSON请求(与&回调=?),我得到有效的JSON返回,但它没有触发回调函数,因为它不是有效的JSONP。
有什么好方法可以访问返回的JSON数据吗?
答
不,它必须是JSONP数据,因为整个事情是如何工作的,它基本上包括一个JavaScript文件,通过创建一个<script>
标签...并且该响应必须是有效的JavaScript,一个对象字面量(本身)是无效的JavaScript。
想想另一种方式:如果我们可能从从远程服务器获取JSON,为什么JSONP存在? :)
答
那么首先,如果您的服务器获取JSON不支持JSONP,那么您将不得不使用代理。如果它确实支持JSONP,则应该像下面的示例那样格式化您的请求。当你不指定在$ .getJSON回调(?...... &回调=),那么你的要求是这样的:
http://someurl?callback=123489234982
与它的结束有些可笑号码,它使你的生活痛苦。所以,你应该指定一个回调和格式化你的代码如下所示:
<script>
$.getJSON("your url?callback=callbackName", ....);
function callbackName { do what you want with the json in here }
</script>
如果不工作,那么您的服务器不支持JSONP :(这里是你可以使用一个PHP代理链接是相当不错的,有大量的文件。
答
是的,它吸收。我在与Viddler API(浏览器端)相同的问题。它发送JSON数据传回,但不是在脚本JSON -P接口。
因此,你有两个操作tions:
- 正如人们所说的,使用后端代理来请求服务器端。
- 如果您只需要支持一个浏览器(我的情况为Chromium),请使用类似“chromium-browser --disable-web-security”的内容来禁用“same-origin-policy”规则。这将允许您提出跨域请求,但仅限于此特定情况。
祝你好运!
您是否在控制远程服务器?您是否无法通过服务器脚本调用远程服务器? – Philar 2010-11-23 18:06:22
如果您还可以请提及远程服务器的网址 – Philar 2010-11-23 18:07:29