2012-11-27 3 views
1

실수로 버튼을 두 번 클릭했을 때 아약스가 동일한 결과를 테이블에 추가 할 수 있습니다. 검색 버튼을 클릭하면 아약스가 2 개 이상의 결과를 반환하는 것을 막을 수있는 방법이 있습니까? 나는 아약스를 중단하려했지만 그 결과는 똑같다. 아약스 메신저 단지 초보자 그래서 당신은 단순히 이러한 경우를 방지하기 위해, 클릭 이벤트에 잠금 장치를 추가 할 수 있습니다 나에게 사람버튼이 여러 번 트리거 될 때 동일한 결과가 여러 번 나타남

$("#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>"); 

         }); 
        } 
      }); 

    }); 

답변

0

여기에는 두 가지 기본 접근 방식이 있습니다. 나는 당신에게 코드보다는 텍스트 응답을 줄 것이다.

  • 가 클릭하자마자 버튼을 비활성화하고, AJAX 응답 한 경우 다시 활성화 (예 complete 처리기);
  • 버튼을 사용 가능 상태로 두지 만 이전 클릭으로부터 발생하는 해결되지 않은 이전 ajax 호출을 중단합니다.

이러한 방법은 모두 유효하며 사용자가 선택하는 방법은 전적으로 응용 프로그램에 따라 다릅니다.

  • 첫 번째 완료까지 두 번째 ajax 호출을 허용하지 않으면 접근 방식 1을 선택하십시오.
  • 두 번째 ajax 호출이 이전 호출을 대체 할 수 있어야하는 경우 접근 방법 2를 선택하십시오.
+0

thats for ajax.abort(); 만약 "ajax"변수가 정의 되었다면 아약스는하지 않지만 첫 번째 호출의 우선 순위를 정할 것입니다. 하지만 나는 그것이 작동하지 않는다고 생각한다. 내가 잘못 했니? – Aoi

+0

예, 분명히 그렇습니다. –

+1

핸들러 외부에서'var ajax; '를 선언하십시오. –

2

도움이됩니다.

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

클릭을 해제 하시겠습니까? – Aoi

+0

바인딩을 해제 할 필요는 없지만 더 나은 접근 방법입니다. – Haocheng

관련 문제