如何重新发送失败的xmlHttpRequest?

3

在我的应用程序中,我正在尝试:

  1. 处理失败的xmlHttpRequest
  2. 认证
  3. 重新发送失败的xmlHttpRequest

我知道如何特别捕获错误,特别是针对代码401的授权失败: 我有这种类型错误的特殊情况。

在这种情况下,我只想捕获它并重新发送。

 xhr.onloadend = function () {

       switch (xhr.status) {
                     .
                     .
                     .
                case 401:
                 console.log(xhr);
                 console.log("ERROR INVALID TOKEN");
                 xhr.send(); //this gives error about missing attributes
                break;
         }
  }

我尝试在网上搜索,但没有结果。


1
你应该将请求的所有代码封装在一个函数中,而不是调用 xhr.send。当请求出现错误时,调用该函数。 - ADreNaLiNe-DJ
@ADreNaLiNe-DJ 这是个不错的主意,但问题是我有很多请求,而这个错误处理程序适用于所有请求。你有什么建议吗?谢谢 - dtechlearn
1
再次,将整个请求代码包装在一个函数中。添加一个包含请求详细信息的参数。然后使用它重新运行该函数。您可能还想查看fetch()而不是手动使用XmlHttpRequest - user5734311
1个回答

1

不要直接调用xhr.send,而是将请求的所有代码封装在一个函数中,在请求出错时调用该函数。如下所示:

function ErrorListener() {
  makeHTTPRequest();
}

function makeHTTPRequest(){
var oReq = new XMLHttpRequest();
oReq.addEventListener("error", ErrorListener);
oReq.open("GET", "http://www.example.org/example.txt");
oReq.send();
}

如果错误没有得到解决,那种方法最终会陷入循环,有效地对网站进行 DDoS 攻击。 - user5734311

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接