如何使用跨域从另一个域获取JSON文件 - javascript?

时间:2014-07-18 09:36:12

标签: javascript json cross-domain-policy

这是我尝试使用的json文件: http://www.oref.org.il/WarningMessages/alerts.json 我试图检索大部分时间都是空的“数据”数组。

我遇到了跨域的一些问题,我收到了“Access-Control-Allow-Origin”错误消息。

$.ajax({
  url : "http://www.oref.org.il/WarningMessages/alerts.json",
  type : 'GET',
  crossDomain: true,
  data : "json", 
  dataType : "json",
  success : function(res) {
    console.log('res',res);
  }
});

我也尝试了一些jsonp方法来获取数据,但我没有成功。 有人可以帮我修改我的代码吗?

2 个答案:

答案 0 :(得分:-1)

JSONP实际上是克服XMLHttpRequest相同域策略的简单技巧。 所以尝试用“jsonp”替换“json”代替dataType attribut:

$.ajax({
    url : "http://www.oref.org.il/WarningMessages/alerts.json",
    type : 'GET',
    crossDomain: true,
    data : "json", 
    dataType : "jsonp",
    success : function(res) {
        console.log('res',res);
    }
});

编辑:

解决方案是服务器(php,java),它检索json文件并重新公开它。 然后使用jquery脚本从服务器中检索json。

示例php代码:

header("Content-Type:application/json");
echo file_get_contents("http://www.oref.org.il/WarningMessages/alerts.json");

答案 1 :(得分:-1)

此代码克服了您所面临的错误。 dataType应为" jsonp"让Jquery将其视为Ajax请求。 (使用最新版本的Jquery 2.1.1测试)

 $.ajax({
         url : "http://www.oref.org.il/WarningMessages/alerts.json",
         type : 'GET',
         crossDomain: true,
         data : "json", 
         dataType : "jsonp",
         success : function(res) {
            console.log('res',res);
         }
      });