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

qcbq4gxm  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(125)

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

$(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()抛出了“未捕获(在承诺中)语法错误:JSON输入意外结束。“因此,ajaxError不会触发。
预期行为:我希望document.ajaxError在我没有从获取调用中获得状态200时发布消息。
我们有一个wrapper.js,它具有覆盖函数

window.fetch = (function(arg) {

 }(window.fetch)

我可以在这个函数中全局捕获这个异常吗?

5w9g7ksd

5w9g7ksd1#

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

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

相关问题