項(xiàng)目中,經(jīng)常需使用到j(luò)query ajax請(qǐng)求后臺(tái)數(shù)據(jù)校驗(yàn)前端用戶輸入數(shù)據(jù)的有效性丛版,然后根據(jù)服務(wù)器返回的結(jié)果來(lái)確定是否允許本次的請(qǐng)求數(shù)據(jù)可以提交服務(wù)器
通過(guò)ajax請(qǐng)求后臺(tái)校驗(yàn)前端用戶輸入數(shù)據(jù)
function checkUserName(userName){
$.ajax({
method:"POST",
url:"../front/checkUserName",
data:{"userName":userName},
success:function(data){
if(data.errCode < 0){
alert(data.errMsg);
return true;
}
},
error:function(){
alert("系統(tǒng)異常巩掺,請(qǐng)稍后重試");
return false;
}
});
return true;
}
$(function(){
if(!checkUserName($("#userName").val().trim())){return ;}
$("form").submit();
});
checkUserName函數(shù)的返回值始終是true,并且在提交數(shù)據(jù)到服務(wù)器時(shí)硼婿,會(huì)出現(xiàn)請(qǐng)求失敗锌半,回調(diào)error函數(shù)禽车,可通過(guò)瀏覽器控制臺(tái)F12查看http請(qǐng)求寇漫。究其原因如下jquery中文文檔所說(shuō):

jquery中文文檔
解決此問(wèn)題的辦法只需要在ajax請(qǐng)求中增加async(默認(rèn)為true)參數(shù)并賦值為false,始之為同步請(qǐng)求殉摔,也就是后面的代碼需要等待此次ajax請(qǐng)求結(jié)束后在執(zhí)行州胳,所以,達(dá)到此要求的代碼如下:
function checkUserName(userName){
$.ajax({
method:"POST",
async:false,
url:"../front/checkUserName",
data:{"userName":userName},
success:function(data){
if(data.errCode < 0){
alert(data.errMsg);
return true;
}
},
error:function(){
alert("系統(tǒng)異常逸月,請(qǐng)稍后重試");
return false;
}
});
return true;
}
$(function(){
if(!checkUserName($("#userName").val().trim())){return ;}
$("form").submit();
});