多次触发按钮时的多个相同结果

时间:2012-11-27 04:37:56

标签: jquery ajax

当我不小心双击按钮时,ajax可能会在桌面上附加2个相同的结果。当我点击搜索按钮时,有没有办法阻止ajax返回2个或更多结果?我试图中止ajax,但结果是一样的。我只是ajax的新手所以帮助我们

$("#btn_searchadmin").click(function(){

    var adminname = $("#tb_admin").val();
    var ajax;


    if(ajax){

      ajax.abort();
    }

     ajax = $.ajax({
                    type: "post",
                    url: "manage_deped_searchadmin.php",
                    dataType:'json',
                    cache:false,
                    data:{'adminname': adminname},


                    beforeSend: function(data){

                      $('#tbl_search').html('');


                    },

                    success: function(data){

                      $("#btn_searchadmin").bind('click');

                      $.each(data, function(i, item) {

                        $('#tbl_search').append("<tr><td>"+data[i].adminfname+"</td>  <td>"+data[i].adminlname+"</td>");

                      });
                    }
          });

  });

2 个答案:

答案 0 :(得分:2)

您可以简单地为click事件添加一个锁,以防止出现这种情况。

(function() {
  var lock = false;
  $("#btn_searchadmin").click(function() {
    if (!lock) {
      lock = true;
      // do something
      // unlock at the end of callback
    }
  });
})()

答案 1 :(得分:0)

有两种基本方法。我会给你一个文本答案而不是代码。

  • 单击按钮后立即禁用该按钮,并在ajax响应时重新启用该按钮(例如在complete处理程序中);
  • 保持按钮处于启用状态,但会中止之前点击的任何未解析的先前ajax调用。

这两种方法都是有效的,您选择的方法完全取决于应用程序。

  • 如果必须禁止第二次ajax呼叫,直到第一次ajax呼叫完成,请选择接近1.
  • 如果应允许第二个ajax调用覆盖之前的ajax调用,请选择方法2。