我试图对所有ajax请求进行操作,并专门处理409s,但是即使FireFox调试器清楚地向我显示409,我的状态代码也始终为0。

JS代码

(function(open) {
  XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
    if(this.status === 409)
        console.log("Conflict 409")
    open.apply(this, arguments);
  };
})(XMLHttpRequest.prototype.open);


我可以使用服务器代码轻松生成409s。我看到FireFox和Chrome显示409s。但是this.status始终为0,即使在400s上也是如此。我究竟做错了什么?

最佳答案

您在请求完成之前正在检查状态。

您可以使用xhook库来拦截XHR响应。

例:

xhook.after((request, response) => {
  if (response.status === 409) {
    console.log("Conflict 409")
  }
})

10-07 22:25