从非本地服务器获取json结果

时间:2011-08-22 14:09:13

标签: jquery json

我使用以下代码获取json编码结果

$.get('localhost/hospital/index/json', function(data) {
   alert(data);
});

这是localhost URL的工作。但我想从外部服务器获取结果。我尝试按照示例url来执行此操作。

$.get('hospitalsystem.dev/index/json', function(data) {
   alert(data);
});

但它不起作用。请帮帮我。

4 个答案:

答案 0 :(得分:2)

在代码段中省略网址中的http://可能会阻止请求生效,如this example所示。

AJAX请求受Same Origin policy限制,这意味着您只能向同一个域发出请求。有三种主要方法可以解决这个问题:

  • JSONP涉及向API添加参数以充当javascript文件。 JQuery can使这与普通的AJAX请求一样简单。这方面的一个大问题是,它要求您信任您所呼叫的API的提供者不要做任何恶意的事情,例如将cookie传回给他们。

  • Cross-Origin Resource Sharing是一种更优雅的解决方案,但仅适用于in some browsers.

  • Creating a proxy对于AJAX请求几乎可以使用任何API,但会增加一些额外的开销,并且每个AJAX请求有两个请求而不是一个请求可能会影响性能。

答案 1 :(得分:0)

出于安全原因,您无法使用AJAX从其他域读取数据。

您应该修改服务器以使用JSONP。

答案 2 :(得分:0)

然后使用JSONP。因为当url在另一台服务器上时,AJAX调用不起作用。

所以你需要做的是阅读JSONP并找到一种方法来使用它。

这基本上是JSON,但是以js文件的形式,如

<script language="javascript" src="/js/my.js"></script>

而只是/js/my.js使用您的位置,没有其他办法,相信我。

使用jQuery动态加载来自不同网址的脚本并使用它们返回的数据。

答案 3 :(得分:0)

根据您的服务器功能,您可以编写代理脚本。你的JS要求代理获取并响应json文件。

例如:craigslist rss feed