ajax同步獲取遠端資料的方法比較——$.ajax與$.getJSON
阿新 • • 發佈:2019-02-17
今天專案中遇到了ajax遠端請求資料的問題,一開始使用$.ajax獲取不到資料,後來發現ajax預設是非同步獲取資料的,於是尋求同步獲取的方法,最開始是這樣的:
$.ajax({ url: url, dataType: 'jsonp', async:false, success: function(response){ if (response.error) { alert(response.error.message + '\n' + response.error.details.join('\n')); } else { feature = esrijsonFormat.readFeatures(response); } } });
上面設定了 async:false,可是實際執行過程中,依然是非同步執行的,不知道是什麼原因。後來採用 $.getJSON的方式,按如下進行同步獲取:
$.ajaxSettings.async = false; //設定getJson同步
$.getJSON(url,function(data){
feature = esrijsonFormat.readFeatures(data);
});
$.ajaxSettings.async = true; //設定getJson非同步
這樣就在程式執行過程中,同步獲取到需要的資料。至於前面的$.ajax為什麼在設定了同步的條件下依然非同步執行,還不得而知。現將問題及兩種方法記錄於此,希望用$.ajax同步獲取失敗的可以試試$.getJSON,經實測是可行的。