【问题标题】:Ajax success: {return false;}Ajax 成功:{return false;}
【发布时间】:2012-05-26 14:36:05
【问题描述】:

success 完成时,我想从$.ajax 返回false

$.ajax({
    url: '' + $website_url + 'queries/voorraad_berekenen.php',
    type: 'post',
    data: {
        aantal: $(this).parent('form').children('.quantity').val(),
        item_number_1: $(this).parent('form').children('.item_number_1').val()
    },
    success: function(result) {
        return false;
    }
});

这不起作用。有解决办法吗?

【问题讨论】:

  • 你的意思是你想在成功完成后从$.ajax返回false?
  • 是的,在成功函数之间有一个脚本检查几个变量,并基于此我想返回 false;
  • 你需要研究callbacks。对此有很多个问题。
  • 请向我们展示应该读取返回值的代码。这样就可以更容易地提供更全面的答案。
  • 您将 false 返回给该函数的调用者,该函数是 jQuery 内部函数,它们并没有真正将返回值用于任何事情。

标签: javascript jquery ajax


【解决方案1】:

从您的帖子中,我猜您调用了一个包含$.ajax() 的函数并尝试将return false 调用到该函数。但你不能这样做,因为 AJAX 是异步的。

最好从 ajax 成功函数中调用一个函数,如下所示:

$.ajax({
    url: '' + $website_url + 'queries/voorraad_berekenen.php',
    type: 'post',
    data: {
        aantal: $(this).parent('form').children('.quantity').val(),
        item_number_1: $(this).parent('form').children('.item_number_1').val()
    },
    success: function(result) {
        var returned = true;
        if(some_condition_not_satisfied) {
          returned = false;
        } else {

        }
        // call a function
        calledFromAjaxSuccess(returned);
    }
});

function calledFromAjaxSuccess(result) {
  if(result) {
    alert('TRUE');
  } else {
    alert('FALSE');
  }
}

【讨论】:

  • 我唯一想要的是当数量少于产品库存并且是数字时,表单(在这种情况下为贝宝表单)不会执行到贝宝支付页面的帖子.也许有人有更好的想法在成功函数中使用。类似中止表单提交
  • @thecodeparadox:即使进行 AJAX 调用 async: false 也不允许我在 success 函数中使用 return false;。我创建了一个单独的函数,它返回 false 并在 success 函数中调用它,但无济于事。有什么想法吗?
  • 这基本上是对@thecodeparadox答案的解释。 javascriptissexy.com/…
【解决方案2】:

也许您可以尝试这样的事情(值 1 和 0 应该更改为您使用的值):

success: function(result){
if(result === '1'){
// do something
}
else
   return false;
}

【讨论】:

  • 已经试过了,问题是,当“return false;”时它永远不会工作。在“成功:功能”之间,否则它已经可以工作了
  • 这里return仍然没有意义。
【解决方案3】:

只要使用 asunc false 它就可以正常工作,我只是这样实现的

试试看

$.ajax({
    url: '' + $website_url + 'queries/voorraad_berekenen.php',
    type: 'post',
    data: {
        aantal: $(this).parent('form').children('.quantity').val(),
        item_number_1: $(this).parent('form').children('.item_number_1').val()
    },
   async: false, //=>>>>>>>>>>> here >>>>>>>>>>>
    success: function(result) {
        return false;
    }
});

试一试就好了

【讨论】:

    【解决方案4】:
    <form action="yourpage" method="post" onsubmit="return matchpass();">
      <div>
       <label> Name</label>
       <input type="text" name="name" id="name">
      </div>
      <div>
       <label> Email ID</label>
       <input type="email" name="email" id="email">            
      </div>
      <div>
       <label> Mobile No</label>
       <input type="text" name="mob"  maxlength="10" onkeyup="check_if_exists();" autocomplete="off" id="mob">
      </div>                             
      <div>
       <button type="button" >Send</button>
      </div>
      <span id="err"></span>
      <div>
       <label> OTP</label>
       <input type="password" name="otp" id="otp"  maxlength="6" placeholder="****">
       <span id="err2"></span>
      </div>    
      <div>
       <input type="reset" value="Reset" class="reset-btn">
       <input type="submit" name="submit" id="submit" value="Submit" >              
      </div>
    </form>
    <input type="hidden"  id="otpcheck"/>
    
    
    
    <script>
    function matchpass()
    {
    
         $.ajax({   
        type:"post",
        url: "yourpage",
        data:{ mobile:mob,otp:otp},
        success:function(data)
        {
           if(data==1)
           {
               document.getElementById("otpcheck").value=1; //important
           }else{
    
               document.getElementById("err2").style.color = "red";
               document.getElementById("err2").innerHTML = "invalid OTP Number ";
             document.getElementById("otpcheck").value=0; //important
           }
    
    
        }
        });
    
        if(document.getElementById("otpcheck").value==0){
            return false;
        }
    
    }
    

    【讨论】:

      【解决方案5】:

      我面临这个问题。然后我找到了实际的解决方案。使用 async : false,在 ajax 调用中

      function thisisavailavailusername(uname){
      var dataString = 'username='+ uname.value;
      var trueorfalse = false;
      $.ajax({
          type: "post",
          url: "/BloodBook/checkavailableusername",
          data: dataString,
          cache: false,
          async : false, //user this then everything ok
          success: function(html){
              if(html=="true"){
                  $('#validusername').html('Available');
                  trueorfalse = true;
              }else{
                  $('#validusername').html('Not Available');
                  trueorfalse = false;
              }
      
          },
          error: function() {
              alert("Something Wrong...");
          }
      });
      
      return trueorfalse;
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        • 1970-01-01
        相关资源
        最近更新 更多