由于之前開(kāi)發(fā)都會(huì)用其他前端框架自帶的remote方法埋心,并且對(duì)ajax等前端內(nèi)容涉及面也少,才嘗此果忙上。
需求:需要在每次提交表單時(shí)進(jìn)行唯一性校驗(yàn)拷呆。
function duplicateValidCertNo(value){
var result = false;
$.ajax(
{ type: "POST",
url: "${webRoot}/account/duplicateValidCertNo",
data: { certNo: value },
success: function(data){
if(data.status){
errorMsg(data.msg);
}else{
result = true;
}
}
})
return result;
}
遇到的坑:每次調(diào)用該方法返回的都是undefind
解決方法:搞了半天未果,求助度娘疫粥,下面真相茬斧。被自己蠢哭。
在這我們我們發(fā)送了一個(gè)異步請(qǐng)求來(lái)驗(yàn)證輸入的用戶(hù)名梗逮,但結(jié)果卻沒(méi)有想的那樣返回true or false项秉,卻返回了undefined,這是因?yàn)槟惆l(fā)送了異步請(qǐng)求慷彤,但請(qǐng)求的數(shù)據(jù)還沒(méi)返回回來(lái)娄蔼,就已經(jīng)執(zhí)行到return語(yǔ)句,自然就返回了undefined底哗。
所以我們需要將異步請(qǐng)求變?yōu)橥剿晁撸没卣{(diào)函數(shù)來(lái)發(fā)送return值,并在ajax的success回調(diào)中用變量存儲(chǔ)返回值跋选。
function duplicateValidCertNo(value){
var result = false;
$.ajax(
{ type: "POST",
url: "${webRoot}/account/duplicateValidCertNo",
data: { certNo: value },
async: false,
success: function(data){
if(data.status){
errorMsg(data.msg);
}else{
result = true;
}
}
})
return result;
}