$(document).ajaxError未在401上触发

时间:2019-05-27 19:34:37

标签: javascript jquery ajax backbone.js chaplinjs

我们有一个错误处理程序来发布消息。

 $(document).ajaxError(function (e, xhr, options) {
  window.postMessage(....);  
});

提取调用之一返回401

this.fetch = function(url) {
return fetch(url, { 
  }
}).then(function(response) {
  return response.json();
})

当我检查响应时,状态为401,但是response.json()抛出“ Uncaught(未承诺)SyntaxError:JSON输入意外结束。”因此,ajaxError没有触发。

预期的行为:如果我没有从fetch调用中获取状态200,我希望document.ajaxError发布消息。

我们有一个具有重写功能的wrapper.js

 window.fetch = (function(arg) {


 }(window.fetch)

我可以在此函数内部全局捕获此异常吗?

1 个答案:

答案 0 :(得分:0)

根据评论,我无法在ajaxError处理程序上执行此操作,因为它不是源自jquery。 我能够在Window.fetch包装器

中完成此操作
 window.fetch = (function (original)) {
  ...............

  return original.apply(this, args).then(function (response)) {

      if(response.status !== 200)
       {
           window.postMessage({ event_type: 'request:failed', status: response.status); 
       }   
   }
}