1

当我不小心双击按钮时,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>");

                      });
                    }
          });

  });
4

2 回答 2

2

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

(function() {
  var lock = false;
  $("#btn_searchadmin").click(function() {
    if (!lock) {
      lock = true;
      // do something
      // unlock at the end of callback
    }
  });
})()
于 2012-11-27T04:39:48.330 回答
0

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

  • 一旦点击按钮就禁用它,并在ajax响应时重新启用它(例如在complete处理程序中);
  • 使按钮保持启用状态,但中止先前单击导致的任何未解决的先前 ajax 调用。

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

  • 如果在第一次完成之前必须禁止第二次 ajax 调用,请选择方法 1。
  • 如果应该允许第二个 ajax 调用覆盖之前的调用,请选择方法 2。
于 2012-11-27T04:47:01.787 回答