1. 程式人生 > >ajax同步獲取遠端資料的方法比較——$.ajax與$.getJSON

ajax同步獲取遠端資料的方法比較——$.ajax與$.getJSON

今天專案中遇到了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,經實測是可行的。