为了获取ajax请求的返回值后进行下一步操作,我经常会这么用:
$.ajax_getType = function(open_id){
var url = '/ad/ad/get-type?open_id=' + open_id;
//定义全局变量
return_data = '';
$.ajax({
url: url,
async: false, // 关键,同步和异步的参数,若无此参数则不等ajax执行完就继续往下执行
type: 'get',
success: function (data) {
console.log('success!');
return_data = data;
}
});
return return_data;
};
由于一直使用火狐浏览器调试,没发现有什么问题,后来偶然发现,这样使用在谷歌浏览器是会报
Synchronous XMLHttpRequest on the main thread is deprecated
because of its detrimental effects to the end user’s experience. For
more help, check https://xhr.spec.whatwg.org/.
同步的ajax请求会造成整个页面阻塞,等待ajax请求返回,因此在主线程运行会导致用户体验问题,谷歌浏览器直接禁用同步ajax。
解决办法:
异步操作只能在回调中进行。
$.ajax_getType = function(open_id){
var url = '/ad/ad/get-type?open_id=' + open_id;
$.ajax({
url: url,
type: 'get',
success: function (data) {
console.log('success!');
//在这里直接处理数据,或者调用函数
$.prepareDare(data);
}
});
};