$.getJSON()獲取文件內容的操作是一個異步請求,如果想將獲取的某一個值存起來,類似這樣:
var name;
$.getJSON('../js/test.json', function(data){
data.forEach(function(item){
if(item.id == 1) {
name = item.name;
}
})
})
console.log(name);//輸出爲undefined
結果和預期的一樣,在函數外面根本拿不到name的值,因爲在執行console.log(name)的時候,由於getJSON的異步回調,name還沒有被賦值,所以是undefined。
解決辦法就是等getJSON執行完畢後再執行下面的代碼。即把異步操作轉化成同步操作。方法就是設置:
$.ajaxSettings.async = false;
執行完成後恢復成異步:
$.ajaxSettings.async = true;
就是這樣:
var name;
$.ajaxSettings.async = false;
$.getJSON('../js/test.json', function(data){
data.forEach(function(item){
if(item.id == 1) {
name = item.name;
}
})
})
console.log(name);//輸出爲'testName'
$.ajaxSettings.async = true;