我有一个很好的本地脚本:
$.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选项为真。