检测任何 ajax 调用何时失败
Detect when any ajax calls fail
我有一个网站,用户可以在其中处理项目,他们的工作会自动保存到我的数据库中。在我的网站上,每隔几秒钟就会发生一次 ajax (post) 调用(通常在 jquery 中)以检查权限等等。
有一段代码可以检查页面上 ajax 调用的 any 是否失败。我不想去每个单独的电话并在最后添加一段代码。
基本上这是为了在用户失去连接或出现问题时提醒用户。
您可以使用 jQuery 事件 ajaxError
。只要 Ajax 请求完成并出现错误,它就会被触发:
$(document).ajaxError(function() {
console.error('Error');
});
查看 documentation。
我建议您覆盖原来的 jquery ajax 函数。
var $_ajax = $.ajax; // reference to original ajax
$.ajax = function(options) {
if (options.error) {
// reference to original error callback
var originalErrorHandler = options.error;
var errorHandlerContext = options.context ? options.context : $;
var customErrorHandler = function(xhr, status, error) {
// notify error to your user here
};
// override error callback with custom implementation
options.error = customErrorHandler;
};
return $_ajax.apply($, arguments);
}
$(document).ready(function(){
//ajax setup settings
$.ajaxSetup ({
cache: false,
async: false,
statusCode: {
404: function() {
alert('Page not found!');
},
500: function(jqXHR, textStatus) {
alert('Server side: ' + textStatus);
}
}
});
});
希望对您有所帮助
我有一个网站,用户可以在其中处理项目,他们的工作会自动保存到我的数据库中。在我的网站上,每隔几秒钟就会发生一次 ajax (post) 调用(通常在 jquery 中)以检查权限等等。
有一段代码可以检查页面上 ajax 调用的 any 是否失败。我不想去每个单独的电话并在最后添加一段代码。
基本上这是为了在用户失去连接或出现问题时提醒用户。
您可以使用 jQuery 事件 ajaxError
。只要 Ajax 请求完成并出现错误,它就会被触发:
$(document).ajaxError(function() {
console.error('Error');
});
查看 documentation。
我建议您覆盖原来的 jquery ajax 函数。
var $_ajax = $.ajax; // reference to original ajax
$.ajax = function(options) {
if (options.error) {
// reference to original error callback
var originalErrorHandler = options.error;
var errorHandlerContext = options.context ? options.context : $;
var customErrorHandler = function(xhr, status, error) {
// notify error to your user here
};
// override error callback with custom implementation
options.error = customErrorHandler;
};
return $_ajax.apply($, arguments);
}
$(document).ready(function(){
//ajax setup settings
$.ajaxSetup ({
cache: false,
async: false,
statusCode: {
404: function() {
alert('Page not found!');
},
500: function(jqXHR, textStatus) {
alert('Server side: ' + textStatus);
}
}
});
});
希望对您有所帮助