加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax 在debug和alert时都正确但是直接运行却报错

发布时间:2020-12-15 21:00:57 所属栏目:百科 来源:网络整理
导读:今天遇到一个问题.我写了一段ajax代码,当我debug调试的时候结果正确.但是直接运行的时候却反悔错误结果.当我不debug在代码中执行alert的时候也正确.下面是代码. $.validator.addMethod("isUniq",function(value,element){ var flag = false; var start = $("

今天遇到一个问题.我写了一段ajax代码,当我debug调试的时候结果正确.但是直接运行的时候却反悔错误结果.当我不debug在代码中执行alert的时候也正确.下面是代码.

$.validator.addMethod("isUniq",function(value,element){
var flag = false;
var start = $("#start").val();
var end = $("#end").val();
if(end!= null && "" != end && start != null && "" != start){
$.ajax({
url:"/upgrade-ticket/upgradeTicket/isUniq?timestamp="+ new Date().getTime(),
type:"POST",
data:"&start="+start+"&end="+end,
success:function(data){
if("none" == data){
flag = true;
}else{
flag = false;
}
}
});
}
return flag;
},"该区域号码已被添加,请重新输入.");

针对这个问题,有人说是变量没有赋初始值,但是我的有指定初始值false.原来是ajax同步异步的问题.从ajax的名字就能得知,默认就是异步的.同步需要等待返回结果才能继续,异步不必等待,一般需要监听异步的结果.而此程序就是还没有等待返回结果.所以if中的赋值不起作用.直接return false了.当加入async:false,后,代码执行正确.这一句的作用就是改成同步.完整代码如下:

$.validator.addMethod("isUniq",
async:false,
data:"&start="+start+"&end="+end,请重新输入.");

为什么debug时和有alert操作就执行正确结果?

因为这连个都是阻塞操作,他能等到服务器返回值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读