如何避免按钮点击两次重复请求

时间:2017-01-21 06:43:51

标签: javascript jquery mysql ajax onclick

我点击一个按钮并调用一个功能...当我点击按钮两次

  

数据插入两次

在mysql数据库中我怎么能避免它在我的情况下..?

这是我的动态HTML:

<button type="button"
    href="javascript:;"
     class="btn btn-primary"
       onclick="jobResponse('yes',<?php echo $myjobs['id_job'];?>)"> 
         Subimt </button>

这是我使用ajax调用的函数:

 <script type="text/javascript">
    function jobResponse(res,jobId){
        var frm_data = { res : res,
            jobId : jobId
        }
        $.ajax({
            //ajax resopons and requst
        });
    }
    </script>

我该如何解决这个问题..?

5 个答案:

答案 0 :(得分:4)

传递按钮引用并禁用它,稍后当ajax完成时,如果需要,再次启用它。

<button type="button" href="javascript:;" class="btn btn-primary" onclick="jobResponse(this, 'yes',<?php echo $myjobs['id_job'];?>)">    Subimt</button>
<!--                                                                   ----------------^^^^----


<script type="text/javascript">
  function jobResponse(ele, res, jobId) {
    var frm_data = {
      res: res,
      jobId: jobId
    };
    // disable the button
    $(ele).prop('disabled', true);
    $.ajax({
      //ajax resopons and requst
      complete: function() {
        // enable the button if you need to
        $(ele).prop('disabled', false);
      }
    });
  }
</script>

答案 1 :(得分:3)

你可以像第一次用户点击按钮时那样禁用

onclick="this.disabled='true';jobResponse('yes',<?php echo $myjobs['id_job'];?>)"> 

答案 2 :(得分:3)

你可以使用这样的标志

<script type="text/javascript">

var isClicked = false;
    function jobResponse(res,jobId){
if(isClicked=== false){
       var frm_data = { res : res,
            jobId : jobId
        }
        $.ajax({
            //ajax resopons and requst
        });
       isClicked  = true;
}
    }
    </script>

答案 3 :(得分:3)

你可以在这里遵循一个简单的技巧。最初定义布尔类型变量true。点击第一次后将成为false。就像这样。

<script type="text/javascript">
var x=true;
function jobResponse(res,jobId){
    if(x){
        x=false;
        var frm_data = { res : res,
            jobId : jobId
        }         
        $.ajax({
            //ajax resopons and requst
        });
    }
}
</script>

答案 4 :(得分:3)

在函数调用后禁用按钮,并在ajax响应后启用

动态html

<button type="button"
href="javascript:;"
 class="btn btn-primary"
 id="saveJob"
   onclick="jobResponse('yes',<?php echo $myjobs['id_job'];?>)"> 
     Subimt </button>

Ajax功能

<script type="text/javascript">
   function jobResponse(res, jobId) {
   var frm_data = {
  res: res,
  jobId: jobId
};
// disable the button
$(#saveJob).prop('disabled', true);
$.ajax({
  //ajax resopons and requst
  complete: function() {
    // enable the button if you need to
    $(#saveJob).prop('disabled', false);
  }
});

}

我希望这会对你有所帮助。