今天项目中遇到了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,经实测是可行的。