由于之前开发都会用其他前端框架自带的remote方法,并且对ajax等前端内容涉及面也少,才尝此果。
需求:需要在每次提交表单时进行唯一性校验。
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;
}
遇到的坑:每次调用该方法返回的都是undefind
解决方法:搞了半天未果,求助度娘,下面真相。被自己蠢哭。
在这我们我们发送了一个异步请求来验证输入的用户名,但结果却没有想的那样返回true or false,却返回了undefined,这是因为你发送了异步请求,但请求的数据还没返回回来,就已经执行到return语句,自然就返回了undefined。
所以我们需要将异步请求变为同步,用回调函数来发送return值,并在ajax的success回调中用变量存储返回值。
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;
}