處理$.getJSON()異步請求的問題

$.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;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章