当ajax成功时 - ajaxComplete未被触发

时间:2016-06-19 18:04:36

标签: javascript jquery ajax

当ajax查询成功时 - 不会触发ajaxcomplete(包含在回调函数中 - click-event)。

当它在另一方面不成功(.error)时,ajaxComplete的效果非常好。

使其变得更加复杂 - 这是关于这个问题的更详细的事实:

1)这对于firefox和IE来说都是如此。当涉及到Chrome时 - AjaxComplete实际上是在ajax成功时触发但是它在行为中执行代码的速度很慢。

非常感谢帮助

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");
  });

});

1 个答案:

答案 0 :(得分:1)

此处的问题是您使用ajaxComplete以及successerror回调。为了更准确,您应该使用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");
    });
});