我有一个看起来像这样的JSON文件:
var sourceData = [
{
"id":"c1",
"title":"What color are your eyes?"
}
]
我想通过jQuery加载它,以便稍后检索数据:
var myData = $.getScript('data_c1.json', function(data, textStatus){
console.log(data);
return data
});
console.log(myData)
当我查看控制台时,有两件事情不符合我的期望:
data
正确返回,但myData
会返回$.getScript
函数本身,而不是数据。为了记录,我也试过
$.getJSON("sourceData_c1.json", function(json) {console.log(json);});
这根本不适用于我。
我很难过。任何帮助非常感谢!
此外,将var sourceData =
置于JSON文件中是否有效?
答案 0 :(得分:0)
如果您使用$.getJSON()
,那么您的文件输出需要采用JSON格式(如果没有变量声明):
{ "status" : "success",
"msg" : "2 items returned.",
"output" : [
{ "id" : "c1", "title" : "What color are your eyes?" },
{ "id" : "c2", "title" : "What color are your ears?" }
]
}
回调传递返回的JavaScript文件。这通常是 没用,因为此时脚本已经运行了。
脚本在全局上下文中执行,因此它可以引用其他内容 变量并使用jQuery函数。包含的脚本可以有一些 对当前页面的影响
来源:http://api.jquery.com/jquery.getscript/
基本上当你使用$.getScript()
时,一旦回调函数被触发,这意味着你加载的脚本中的代码已经在DOM中并且可以被访问:
$.getScript('data_c1.json', function(data){
//since we are in the callback function, the `sourceData` variable should be added to the DOM and accesible
console.log(sourceData);
});
请注意,如果要返回JavaScript,则脚本文件应具有.js
文件扩展名。如果您想要返回JSON,请使用$.getJSON()
或将AJAX调用的contentType
设置为json
,以便正确解析。
另请注意,myData
变量设置为jqXHR
对象,而不是AJAX调用的响应。