2011-11-25 83 views
0

我有一个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) 

当我看在控制台中,2个东西是不是我所期望:

  1. 日志打到控制台以相反的顺序
  2. data正确返回,但myData返回$.getScript函数本身,而不是数据。

为了记录在案,我也试过

$.getJSON("sourceData_c1.json", function(json) {console.log(json);}); 

,但这并没有工作,为我所有。

我很难过。任何帮助非常感谢!

此外,是否有效的语法将var sourceData =置于JSON文件中?

回答

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); 
}); 

请注意,您的脚本文件应该有一个.js文件扩展名,如果你正在返回的JavaScript。如果您想要返回JSON,请使用$.getJSON()或将AJAX调用的contentType设置为json,以便它将被正确解析。

另请注意,myData变量被设置为jqXHR对象,而不是AJAX调用的响应。

+0

JSON输出语法帮助我(谢谢!),但我仍然无法让它在函数外部可用,然后我发现这个帖子正是我所期待的: http:///stackoverflow.com/questions/1739800/variables-set-during-getjson-function-only-accessible-within-function –