调用了JQuery的异步函数 . a j a x , 然 后 在 .ajax ,然后在 .ajax,然后在.ajax函数外之后又有一段js代码。每次都是在$.ajax之后的代码先执行;
如:
$("#btn-primary").click(function(){
var title = $.trim($("#title").val());
if(title == ""){
//没填用户名
alert("标题不能为空!");
return;
}
var annotionBody = $.trim($("#annotionBody").val());
if(annotionBody == ""){
alert("公告内容不能为空!");
return;
}
$("#btn-primary").text("信息提交中...");
$("#btn-primary").attr('disabled',true);
$("#btn-primary").css({'background-color':'red'});
$.ajax({
type : 'POST',
url : 'addAnnotion',
data : {title : title, annotionBody : annotionBody},
dataType : 'json',
success : function (data) {
// alert("111");
if (data.status == 1) {
alert(data.info);
loginInfo("继续添加公告", "green");
$("#btn-primary").attr('disabled',false);
} else if (data.status == 2) {
alert(data.info);
loginInfo("尝试再次添加", "red");
$("#btn-primary").attr('disabled',false);
}
}
});
$("#btn-primary").attr('disabled',true);
alert("sjh");
});
总是会先执行:
$("#btn-primary").attr(‘disabled’,true);
alert(“sjh”);
再执行 $.ajax({})
???这是为什么????
原因是:
$.ajax({})中有一函数 async:false ,设进去就行;
$("#btn-primary").click(function(){
var title = $.trim($("#title").val());
if(title == ""){
//没填用户名
alert("标题不能为空!");
return;
}
var annotionBody = $.trim($("#annotionBody").val());
if(annotionBody == ""){
alert("公告内容不能为空!");
return;
}
$("#btn-primary").text("信息提交中...");
$("#btn-primary").attr('disabled',true);
$("#btn-primary").css({'background-color':'red'});
$.ajax({
type : 'POST',
async:false ,
url : 'addAnnotion',
data : {title : title, annotionBody : annotionBody},
dataType : 'json',
success : function (data) {
// alert("111");
if (data.status == 1) {
alert(data.info);
loginInfo("继续添加公告", "green");
$("#btn-primary").attr('disabled',false);
} else if (data.status == 2) {
alert(data.info);
loginInfo("尝试再次添加", "red");
$("#btn-primary").attr('disabled',false);
}
}
});
$("#btn-primary").attr('disabled',true);
alert("sjh");
});
拿来和大家分享分享 免得以后忘记了。