本地错误事件之前的全局ajaxError事件
Global ajaxError event before local error event
我有一个全局ajaxError事件,类似于以下内容:
$(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) {
alert("There was a global ajax error!");
});
我有很多本地的ajaxEvents,像这样:
$(imageUploadForm).ajaxForm({
url: assetsUplUrl,
type: 'POST',
dataType: 'json',
data: {project_id: projectId, type: 'image', widget: widget},
error: function(responseText, status, xhr, form){
alert("There was a local ajax error!");
}
});
如何在不更改本地ajax的情况下,在本地错误事件之前触发全局错误事件?
我找到了解决方案。我更改
$(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) {
alert("There was a global ajax error!");
});
至
$.ajaxSetup({
error : function(jqXHR, textStatus, errorThrown) {
alert("There was a global ajax error!");
}
});
和全局处理程序在本地之前调用。
接受的答案对我不起作用。根据https://api.jquery.com/jQuery.ajaxSetup,全局回调函数应该使用它们各自的全局Ajax事件处理程序方法设置,而不是在$.ajaxSetup()
的options
对象中设置。
我的解决方案是使用$.ajaxPrefilter,如下所示:
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
let error = options.error;
options.error = function (jqXHR, textStatus, errorThrown) {
// global error handling first
console.log('global ajax error');
// override local error handling if exists
if ($.isFunction(error)) {
return $.proxy(error, this)(jqXHR, textStatus, errorThrown);
}
};
});
相关文章:
- 全局屏幕span onclick触发一个事件javascript
- 主干视图触发全局事件
- SVG-全局属性和事件的列表
- 缓存事件的变量而不使其全局化
- 通过进程使用 NodeJS 全局事件是个好主意吗?
- 将我的nextPage()函数编写为全局函数,以便onclick事件可以访问它
- 关于性能,最好的方法是什么:setInterval()或body上的全局事件
- 本地错误事件之前的全局ajaxError事件
- EmberJS中的全局keyDown/keyPress事件,而无需设置焦点
- 通知全局事件组件的最佳方式
- js事件循环是否意味着可以为临时暂存空间使用全局变量
- 如何在全局和requireJS对象内部调度事件
- 用javascript更新事件函数中的全局变量
- FRP、角度和全局事件处理程序
- 全局使用键控事件
- 全局变量从事件侦听器中变得未定义 - javascript
- 主干网中的全局点击事件
- jQuery 自定义事件在全局范围内工作,但在对象之间不起作用
- 全局范围 - 在触发事件侦听器后访问“this”
- 如何在方法中添加事件侦听器时调用 removeEventLisener 并在 JavaScript 中的全局函数中调用