使用getScript从CrossDomain解析JSON文件

时间:2011-07-21 21:01:52

标签: jquery json cross-domain getjson getscript

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

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

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

3 个答案:

答案 0 :(得分: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//
        });
    }
});

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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