簡體   English   中英

當ajax成功時-未觸發ajaxComplete

[英]When ajax success - ajaxComplete is not fired

當ajax查詢成功時-不會觸發ajaxcomplete(包裝在callbackfunction中-click-event)。

另一方面,當它不成功(.error)時,ajaxComplete可以很好地工作。

更復雜的是-這是有關此問題的更詳細的事實:

1)這對於firefox和IE都是正確的。 當涉及到Chrome-Ajax成功后實際上會觸發AjaxComplete,但它會緩慢執行該函數中的代碼。

非常感謝您的幫助

Ajax功能

 function fetch_customer_data_from_db(zipcode_string, email_string, query_done, query_fail) {

    var theUrl = "http://mysecretwebpage/json_create.asp";
    $.ajax({
        url: theUrl,
        dataType: "json",

        success: function (response) {

            fadeout_email_field();

            query_done = 1;

            $('#cust_date_of_birth').css('display', 'none');
            $('#customer_data_field_text').css('display', 'block');
            $('#validation_message_email').css('visibility', 'hidden');

            var customer_data = response.customerdata;
            customer_data.forEach(function (custdata) {

                document.getElementById("cfname").textContent = custdata.fname; 
                document.getElementById("clname").textContent = custdata.lname; 
                document.getElementById("cadress").textContent = custdata.street; 
                document.getElementById("czipc").textContent = custdata.zipcode; 
                document.getElementById("clocation").textContent = custdata.location; 
                document.getElementById("cemail").textContent = custdata.email; 
                document.getElementById("cmobile").textContent = custdata.mobile; 
            });
        },

        error: function() {

            if (!query_fail) {


                $('#cust_date_of_birth').css('display', 'block');

                $('#validation_message_email').css('visibility', 'hidden');
                query_fail = 1;
                fadeout_email_field();
            }
        }
    });
}

點擊功能(回調)

如果ajax錯誤(在這里ajaxcomplete有效)

$('#checkbox1').change(function() {

    if($(this).is(":checked")) {

        $( document ).ajaxComplete(function() {
           alert("ajax error!!!");
         });
 }

如果ajax成功(未觸發ajaxComplete)

$('#button_change_cdata').click(function() {

  $( document ).ajaxComplete(function() {   
     alert("ajax success");
  });

});

這里的問題是您將ajaxCompletesuccesserror回調一起使用。 為了更准確,您應該使用ajaxSuccessajaxError

ajaxComplete :注冊一個在Ajax請求完成時要調用的處理程序。

ajaxSuccess :每當Ajax請求成功完成時,就附加一個要執行的函數。

ajaxError :注冊當Ajax請求完成並出現錯誤時要調用的處理程序

對於您的ajaxSuccessajaxError處理程序,請嘗試以下操作:

$( document ).ajaxError(function() {
    $('#checkbox1').on("change",function() {
        if($(this).is(":checked")) {
           alert("ajax error!!!");
        }
    });
});
$( document ).ajaxSuccess(function() {   
    $('#button_change_cdata').on("click",function() {
           alert("ajax success");
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM