2017-12-19 4 views
0

제 신청서에는 각 공급 업체 앞의 확인란과 함께 공급 업체를 나열하는 jQuery 팝업 창이 있습니다. 그런 다음 사용자는 각 공급 업체의 확인란 중 하나를 선택하고 삭제 버튼을 눌러 공급 업체를 삭제할 수 있습니다. 그러나 사용자가 삭제 버튼을 클릭하면 Ajax 호출이 서버 측으로 올바르게 전송되고 서버 측에서 올바르게 삭제됩니다 (삭제 된 공급자는 더 이상 목록에 표시되지 않습니다). 사용자가 다시 한번 동일한 작업을 수행하면 팝업 창이 두 개의 Ajax 요청을 서버 측에 보냈다. 사용자가 세 번째 시간을 클릭하면 팝업 창에서 ajax 요청을 세 번 반복합니다.사용자가 팝업 양식을 제출하면 복수의 ajax 호출이 전송됩니다.

var ajaxURL = getFormAction('crm.web.SupplierManager', 
'deleteSupplierRequestAjax'); 
$("#deleteBtnId").click(function(event) { 
    $("#supplierDeleteConfirmDivId").dialog("open"); 
    $("#supplierPopupCancelBtnId").click(function(event) { 
    $("#supplierDeleteConfirmDivId").dialog("close"); 
    event.preventDefault(); 
}); 
$("#supplierPopupOkBtnId").click(function(event) { 
    $("#supplierDeleteConfirmDivId").dialog("close"); 
     $("#supplierPopupOkBtnId").mask("Waiting..."); 
     $.ajax({ 
      type: 'POST', 
      data: $("#formId").serialize(), 
      url: ajaxURL, 
      success: function (data) { 
       $("#supplierPopupOkBtnId").html(data); 
       $("#supplierPopupOkBtnId").unmask(); 
      }, 
      error: function(jQXHR, textStatus, errorThrown) { 
       $("#supplierPopupOkBtnId").unmask(); 
       handleAjaxError(jQXHR, textStatus, errorThrown); 
      } 
     }); 
    }); 
event.preventDefault(); 
}); 

나를 위해, 그것은 사용자가 삭제 버튼을 클릭 할 때마다 팝업 창에 누적 된 형태로 보입니다. 나는 그것이 진짜 이유인지 확신하지 못한다. 나는 $("#formId").serialize()을 짐작하고있다. 누구나 다른 아이디어가 있습니까? 와

+0

async : false, –

+1

사용하지 마세요. 'async : false'를 사용하지 마십시오. 더 이상 사용되지 않습니다. 비동기 코드가 필요하면'약속'을보십시오. – Zenoo

+0

@ Zenoo 감사합니다. 어떻게 생각하세요? – nwGCham

답변

1

: 당신은 때마다 버튼에 대한 새로운 리스너를 만드는

$("#supplierPopupCancelBtnId").click(function(event){}) 

,이 누적됩니다. JQuery와 워드 프로세서

$("#supplierPopupCancelBtnId").one("click", function() {}); 

:

"하나"를보십시오

는 "사실 말이다() 메소드는 점을 제외하고) (CSTE 연구진 동일 주어진 요소 및 이벤트 핸들러 유형은 최초 호출 후 언 바운드됩니다. "

+0

제안을 적용했습니다. 그래 너가 옳아. 제대로 작동하고 있습니다. 고맙습니다..!!! – nwGCham

+0

당신은 환영합니다 :) –

관련 문제