0

我有一个很好的本地脚本:

$.getJSON("jsonfile.js",function(item) {    
  $.each(item.terra_nova_feed, function(i,item) {
    // functions and varibles//
  });
});

在本地工作得很好。当 JSON 文件移动到另一个域时......什么都没有。我知道我应该使用 getScript 来提取 JSON 文件。但是,如何将这些数据提取到现有脚本中?

4

3 回答 3

2

尝试$.ajax()函数并使用crossDomain:true参数。它本质上使用 JSONP(填充 JSON),将数据包装在回调中。

$.ajax({
    url: "http://www.otherdomain.com/jsonfile.js",
    crossDomain:true,
    type:'get',
    dataType:'json',
    success: function(data) {    
        $.each(data.terra_nova_feed, function(i,data) {
            // functions and varibles//
        });
    }
});
于 2011-07-21T21:05:18.163 回答
1

简短的回答是你真的做不到。话虽如此,如果您可以控制其他域返回的内容,则可以使用称为 JSON-P 的东西。使用 JSON-P,您基本上是在跨域调用脚本文件——脚本需要以调用页面上的方法的方式返回。jQuery 负责调用页面上的管道,但您仍然必须确保带有脚本的服务器正确地发出内容。

于 2011-07-21T21:09:55.373 回答
0

问题是 $.getJson() 通常不适用于 jsonp (这意味着它不能跨域工作,除非某些特殊情况,例如来自服务器的显式支持传递它)但在你的情况下,我认为你应该使用 $ .ajax() 并将 crossDomain 选项设置为 true。

于 2011-07-21T21:04:48.120 回答