javascript - 在 Javascript 中处理浏览器的 HTTP 请求超时

标签 javascript jquery ajax http

在我的 Web 应用程序中,我尝试在调用 REST API 时处理超时情况。这是我的代码,它使用 jQuery ajax 调用 API。

$.ajax({
            type: "POST",
            url: endpoint,
            data: payload,
            dataType: dataType,
            timeout: 0,
            success: successHandler,
            error: failureHandler
        });

成功和失败处理程序如下所示。

function successHandler(data) {
    //Got the data 
}

function failureHandler(xhr, textStatus, thrownError) {
    if(xhr.status==404) {
      console.log('Page not found');
    } else if(xhr.status==408) {
      console.log('request timed out at server. You may want to retry') ;    
    } 
}

如果超时发生在服务器上,则会给出状态 408。但有时,由于网络连接问题,客户端(浏览器)本身会超时,因为它无法在指定时间内连接到服务。我想这是浏览器的行为。如果浏览器请求超时,xhr.statustextStatus 会是什么?如何处理这种情况?

[编辑]我在 Set timeout for ajax (jQuery) 中找到了一些解释。这解释了我们如何在代码中设置超时。但我的问题是我不想这样设置超时。检查ajax请求中的代码,我设置了timeout: 0,这意味着没有超时,我将等待直到收到服务器的响应。同时,浏览器可能会因为全局超时设置而杀死该请求。我正在寻找一个可以解决这个问题的解决方案。

最佳答案

这看起来是一个与这篇文章非常相似的问题。祝你好运! How to detect timeout on an AJAX (XmlHttpRequest) call in the browser?

关于javascript - 在 Javascript 中处理浏览器的 HTTP 请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43421451/

相关文章:

javascript - 如何检查互联网连接而无需刷新整个页面

javascript - javascript/node.js 中的 JSONP 解析

javascript - 使用复选框 onClick 覆盖父级 onClick 事件?

javascript - 使用 Jquery Ajax 在 Spring MVC Controller 中传递字符串列表

java - 使用ajax请求发送时json值返回null

javascript - 语义发布 - 向自动生成的发行说明添加更多部分

JavaScript 变量作为 HTML 链接文本

javascript - 在 jQuery 中重新排序表单数组的聪明、有效的方法?

javascript - 复制网页供以后处理

php - AJAX 请求返回某种形式的长字符串