Javascript getJSON无法正常工作(可能跨域)

时间:2012-07-02 10:40:31

标签: javascript jquery

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

$.support.cors = true;

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

谢谢, 马特

3 个答案:

答案 0 :(得分:0)

使用JSONP (JSON with padding)代替跨域请求。另请参阅jquery plugin以便更轻松地处理jsonp(甚至基本错误处理)。这是一个很好的example page

答案 1 :(得分:0)

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

但如果响应只是json格式:

{a: 1, b:2}

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

答案 2 :(得分:0)

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

cors的支持不是开启的支持。这是浏览器和服务器必须支持的东西。

有关详细信息,请参阅here,但总结一下:

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

您还可以在API docs上看到jQuery.support.cors的文档。