我有一个很好的本地脚本:
$.getJSON("jsonfile.js",function(item) {
$.each(item.terra_nova_feed, function(i,item) {
// functions and varibles//
});
});
在本地工作得很好。当 JSON 文件移动到另一个域时......什么都没有。我知道我应该使用 getScript 来提取 JSON 文件。但是,如何将这些数据提取到现有脚本中?
我有一个很好的本地脚本:
$.getJSON("jsonfile.js",function(item) {
$.each(item.terra_nova_feed, function(i,item) {
// functions and varibles//
});
});
在本地工作得很好。当 JSON 文件移动到另一个域时......什么都没有。我知道我应该使用 getScript 来提取 JSON 文件。但是,如何将这些数据提取到现有脚本中?
尝试$.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//
});
}
});
简短的回答是你真的做不到。话虽如此,如果您可以控制其他域返回的内容,则可以使用称为 JSON-P 的东西。使用 JSON-P,您基本上是在跨域调用脚本文件——脚本需要以调用页面上的方法的方式返回。jQuery 负责调用页面上的管道,但您仍然必须确保带有脚本的服务器正确地发出内容。
问题是 $.getJson() 通常不适用于 jsonp (这意味着它不能跨域工作,除非某些特殊情况,例如来自服务器的显式支持传递它)但在你的情况下,我认为你应该使用 $ .ajax() 并将 crossDomain 选项设置为 true。