Ajax 异步return undefined 踩坑

由于之前开发都会用其他前端框架自带的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;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,842评论 2 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,906评论 0 38
  • 你走了以后 和你没来时 我的心情不一样 你的心 单纯得像小鸟,我的梦 乖巧得像羔羊 我没有 对你的思念画上句号 我...
    江城妖怪阅读 172评论 0 1
  • 【环境】公历2018.1.31 农历2017.12.15 星期三 晴 最高温度1.5℃ 最低温度-12℃ 西风 微...
    贠大师阅读 227评论 0 0