Ajax 内部 return false 不起作用的解决方法

今天在写Ajax的时候遇到一个问题,Ajax内部的 return false 不生效,并继续执行后边的代码。原代码大概如下:

  $(function(){
          //Ajax调用处理
        $.ajax({
           type: "POST",//规定传输方式
           url: "categoryAction",/URL
           data: {'cid':$('#cid').val()},//参数
           success: function(data){
                   if('-1'==data){
                   return false; //此处return false不起作用
                   }
                   else{
                   return true;
                   }
              }
        });
        alert(123); //ajax中的判断条件是否成立,都会执行这步
});

后面百度查找了一些资料,原因如下:
Ajax发起的是异步请求,而JS函数中其他代码执行的是同步请求,这就造成了不管Ajax中的请求是否结束,都不会影响js函数中其他代码的执行,所以return false并不是没有执行,而是只在Ajax内部起作用,在Ajax请求之外就不起作用了,继续执行其他代码。
所以解决方案如下:
1.将Ajax请求方式设置为同步(Ajax默认async:true)在js执行到Ajax代码时,会停止所有页面加载,页面呈现假死状态,当Ajax中的代码执行完毕后,才会继续执行其他代码。
2.使用全局变量返回结果。
改进后的代码如下:

  $(function(){
              //Ajax调用处理
              var result =false;
              $.ajax({
               async:false,//同步加载
               type: "POST",//规定传输方式
               url: "categoryAction",/URL
               data: {'cid':$('#cid').val()},//参数
               success: function(data){
                       if('-1'==data){
                         result=false;
                       }
                       else{
                         result=true;
                       }
                  }
            });
            return result; // 返回结果为true时,后面的代码才会执行。
            alert(123);
    });
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值