在js中使用ajax请求时需要注意,如果在ajax请求结束后需要继续js方法的操作,需要设置ajax属性
async 设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
async 默认为true:
即如果在js函数中先调用ajax函数再进行其他操作,如函数有返回值,那么需要给ajax设置同步属性!!!
写miniui自定义校验时的血淋淋的教训:
开始时没有添加同步属性,通过ajax请求后台数据校验,然后每次获得的e.isValid属性是变化的,但是 校验中并没有效果显示,提交数据时这个校验结果也是没有效果的,试了大半天,发现是ajax的执行顺序问题,最后加了同步属性之后,效果是正常的显示!!!!!!!
function isalive(e) {
var flag=true;
var data = form.getData();
var site = new mini.get("site");
var datas = {
bookname : data.bookname
};
$.ajax({
url : "../Selbookbyname",
type : "post",
async:false ,//同步
data : mini.encode(datas),
success : function(result) { //成功操作
if(result.flag){
flag=true;
e.isValid = false;
}else{
flag=false;
e.isValid = true;
}
},
error : function() {
console.log("发送数据失败");
}
});
}
//名称校验未生效
function onbooknameValidation(e) {
isalive(e)
}