Javascript getJSON 不起作用(可能是跨域)

Javascript getJSON not working (Possibly Cross Domain)

本文关键字:getJSON 不起作用 Javascript      更新时间:2023-09-26

我从服务器获取JSON,当我在浏览器中输入URL时,我可以看到JSON数据。当我使用 curl 获取 JSON 时,我也可以看到数据。但是当我尝试在本地使用 html 页面访问数据时,出现错误。我试过使用

$.support.cors = true;

但是我仍然收到错误,无论如何我可以解决这个可能的跨域问题吗?

谢谢马 特

对跨域请求使用 JSONP(带填充的 JSON)。另请参阅 jquery 插件,以便更轻松地处理 jsonp (甚至是基本的错误处理)。这是一个很好的示例页面。

如果服务器支持 JSONP ,那么您可以通过getJSON?callback=?附加到 url 来获取数据。

但是,如果响应只是 json 格式,例如:

{a: 1, b:2}

然后,您不能使用 Ajax 直接获取数据。一种解决方案是在服务器端创建一个代理,获取远程 json 数据,然后再次输出以避免跨域问题。

其他答案提出了合适的替代方案(JSONP),但要解释为什么它不起作用;

cors的支持不是您可以打开的。这是浏览器和服务器必须支持的东西。

有关更多信息,请参阅此处,但要总结:

  • 服务器需要发出一个Access-Control-Allow-Origin: *标头(或定制*作为您希望允许的域)。
  • 您需要使用 Firefox 3.5、Safari 4、Chrome 3、IE 8 或 Opera 12。

您还可以在 API 文档中查看有关jQuery.support.cors的文档。