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

今天遇到一个问题.我写了一段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操作就执行正确结果?

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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值