关于Ajax中async的理解和应用
理解:
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),既然是异步的那么他和整个程序加载顺序是无关的,也就是ajax程序在整个程序中是不同步的,换句话说不按照从上到下运行程序,而async 属性的作用既是设置整个流程是否为同步的。
应用:
之前遇到个问题是,使用mui.showLoading("正在提交...", "div")方法显示遮罩层,但是实际测试时却一直无法实现,通过Debugger发现执行到此处时,确实可以显示。最后发现问题就出在async属性上,当异步执行Ajax方法时,下方的mui.hideLoading();提前执行,导致遮罩层显示后立马被关闭。也就无法实现效果了,修改async属性后,遮罩层正常显示。
function tj(filelist) {
var varArray=new Array();
varArray.push(new Variable("pass","Y","B"));
varArray.push(new Variable("start","N","B"));
var var_json= JSON.stringify(varArray) ;
mui.showLoading("正在提交...", "div");
$.ajax({
type: 'post',
url: '${ctx}/zcrz/zcrzsqtj',
data: {
lxfs: $("#lxfs").val(),
fplist:JSON.stringify(fpmxinfo),
filelist: filelist,
var_json:var_json
},
dataType: 'json',
async: true,//当设置为Ture时,Ajax异步执行。
success: function (val) {
if (val.success == true) {
mui.hideLoading();
window.location.href = "${ctx}/rcbx/rcbxthreecx?from=zcrz&xmbh=${xmbh}}";
} else {
mui.hideLoading();
mui.toast(val.msg);
}
}, error: function (jqXHR, textStatus, errorThrown) {
mui.hideLoading();
/*错误信息处理*/
console.log(jqXHR.readyState);
}
});
}

浙公网安备 33010602011771号