1

ボタンを誤ってダブルクリックすると、テーブルに同じ結果が 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

そのような場合を防ぐために、クリックイベントにロックを追加するだけです。

(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

これには 2 つの基本的なアプローチがあります。コードではなくテキストで回答します。

  • ボタンがクリックされるとすぐに無効にし、ajax が応答したら (completeハンドラーなどで) 再度有効にします。
  • ボタンを有効のままにしますが、以前のクリックによって発生した未解決の以前の ajax 呼び出しを中止します。

これらのアプローチはどちらも有効であり、どちらを選択するかは完全にアプリケーションに依存します。

  • 最初の呼び出しが完了するまで 2 番目の ajax 呼び出しを禁止する必要がある場合は、アプローチ 1 を選択します。
  • 2 番目の ajax 呼び出しで以前の呼び出しをオーバーライドできるようにする必要がある場合は、アプローチ 2 を選択します。
于 2012-11-27T04:47:01.787 に答える