2011-11-25 43 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 –