AJax技术

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

字号+ 作者:H5之家 来源:H5之家 2017-07-10 12:03 我要评论( )

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

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", 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",
    async:false,
    data:"&start="+start+"&end="+end,
    success:function(data){
     if("none" == data){
      flag = true;
        }else{
         flag = false;
        }
    }
   });
  }
  return flag;
 },"该区域号码已被添加,请重新输入.");

 

 

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

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


 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 领先技术: 单页界面和AJAX模式

    领先技术: 单页界面和AJAX模式

    2017-07-10 13:01

  • PHP从入门到精通(第三版)02 Ajax使用的技术.ppt

    PHP从入门到精通(第三版)02 Ajax使用的技术.ppt

    2017-07-10 12:00

  • AJAX背景技术介绍

    AJAX背景技术介绍

    2017-07-10 11:10

  • php怎么接收jquery ajax传来的值?

    php怎么接收jquery ajax传来的值?

    2017-07-09 17:02

网友点评