当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");
});
});
答案 0 :(得分:1)
此处的问题是您使用ajaxComplete
以及success
和error
回调。为了更准确,您应该使用ajaxSuccess
和ajaxError
。
ajaxComplete :注册Ajax请求完成时要调用的处理程序。
ajaxSuccess :在Ajax请求完成成功时附加要执行的函数。
ajaxError :注册Ajax请求完成时要调用的处理程序
对于ajaxSuccess
和ajaxError
处理程序,请尝试以下操作:
$( 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");
});
});