我正在尝试从远程服务器调用JSON数据,但服务器不会返回有效的JSONP表单数据,只返回有效的JSON数据。 (通过验证人确认)
如果我发出getJSON请求(使用& callback =?),我会返回有效的JSON,但它不会触发回调函数,因为它不是有效的JSONP。
有没有什么好方法可以访问返回的JSON数据?
答案 0 :(得分:2)
不,它必须是JSONP数据,因为整个事情是如何工作的,它基本上包括一个JavaScript文件,通过创建一个<script>
标签......并且该响应必须是有效的JavaScript,一个对象文字(本身)是无效的JavaScript。
另外想想:如果我们可以从远程服务器获取JSON,为什么JSONP会存在? :)
答案 1 :(得分:2)
是的,很糟糕。我对Viddler API(浏览器端)也有同样的问题。它正在发送JSON数据,但不是在脚本化的JSON-P接口中发送。
因此,您有两种选择:
答案 2 :(得分:1)
首先,如果您的服务器获得JSON不支持JSONP,那么您将不得不使用代理。如果它确实支持JSONP,您应该格式化您的请求,就像下面的示例一样。当您未在$ .getJSON(...&amp; callback =?)中指定回调时,您的请求如下所示:
http://someurl?callback=123489234982
在它结尾处有一些荒谬的数字,它会让你的生活变得痛苦。因此,您应该指定一个回调并格式化您的代码,如下所示:
<script>
$.getJSON("your url?callback=callbackName", ....);
function callbackName { do what you want with the json in here }
</script>
如果这不起作用,那么你的服务器不支持JSONP :(这里是一个你可以使用的PHP代理的链接,这是非常好的,有很多文档。