我正在尝试从远程服务器调用 JSON 数据,但服务器不返回有效的 JSONP 格式数据,只返回有效的 JSON 数据。(与验证者确认)
如果我发出 getJSON 请求(使用 &callback=? ),我会返回有效的 JSON,但它不会触发回调函数,因为它不是有效的 JSONP。
有什么好的方法可以访问返回的 JSON 数据吗?
我正在尝试从远程服务器调用 JSON 数据,但服务器不返回有效的 JSONP 格式数据,只返回有效的 JSON 数据。(与验证者确认)
如果我发出 getJSON 请求(使用 &callback=? ),我会返回有效的 JSON,但它不会触发回调函数,因为它不是有效的 JSONP。
有什么好的方法可以访问返回的 JSON 数据吗?
是的,这很糟糕。我对 Viddler API(浏览器端)有同样的问题。它正在发回 JSON 数据,但不是在脚本化的 JSON-P 接口中。
因此,您有两个选择:
祝你好运!
不,它必须是 JSONP 数据,因为整个事情是如何工作的,它基本上是通过创建一个<script>
标签来包含一个 JavaScript 文件......并且该响应必须是有效的 JavaScript,对象文字(本身)不是有效的 JavaScript .
换一种方式想一想:如果我们可以从远程服务器获取 JSON,为什么会有 JSONP?:)
首先,如果您的服务器从中获取 JSON 不支持 JSONP,那么您将不得不使用代理。如果它确实支持 JSONP,您应该像下面的示例一样格式化您的请求。当您未在 $.getJSON(...&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 代理的链接,它非常好并且有很多文档。