Ajax请求超时与网络异常处理图文详解

 更新时间:2021年05月23日 12:36:41   作者:追逐那颗星  
最近在项目中遇到一个问题,当加载数据量特别大的时候会出现加载超时现象,所以这篇文章主要给大家介绍了关于Ajax请求超时与网络异常处理的相关资料,需要的朋友可以参考下

别用IE浏览器!!!

问题

当浏览器请求超时或者网络异常的时候,我们程序需要做出什么处理和反应呢?

ps:代码我会在后面贴出来,思路最重要

# 请求超时 首先在==express==逻辑上是这样子写的

// 模拟请求超时
app.all("/delay", (request, response) => {
    response.setHeader('Access-Control-Allow-Origin', '*');
    response.setHeader('Access-Control-Allow-Headers', '*');

    setTimeout(() => {
        response.send('接收成功:模拟请求超时');
    }, 3000);
})

前端的请求

在这里插入图片描述

一开始没有加请求时间的设置,是可以输出结果的

在这里插入图片描述

那么现在呢,我们需要为请求加上一个限制时间,超过这个限制时间,浏览器就会认为此时请求超时了。如下加上

在这里插入图片描述

保存代码,然后到浏览器刷新,打开控制台

在这里插入图片描述

选择network,然后点击按钮,观察network的请求状态

首先一开始是pending状态(请求中)

在这里插入图片描述

超过了请求的阈值(2s),此时显示请求被取消了,显示cancel状态,而不是finish

在这里插入图片描述

但是在实际业务中,你不可能让每个用户打开控制台看请求有没有超时吧,所以我们可以加一个请求超时回调来完成信息弹窗提醒

在这里插入图片描述

我们刷新运行,发现此时就有一个弹窗提示了

在这里插入图片描述

那么,请求超时就演示到这来

网络异常

现在来看看网络异常我们需要怎么处理,那么网络异常在前端js里面也是有回调函数的,如下

在这里插入图片描述

然后,我们通过浏览器的控制台模拟离线状态

在这里插入图片描述

然后,我们点击按钮查看效果

在这里插入图片描述

莫得问题!

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <titile>超时与网络异常处理</titile>
    <style>
        #content {
            width: 400px;
            height: 200px;
            border: 1px solid rgb(4, 247, 25);
            border-width: 3px;
            margin: 20px 0 20px 0;
        }
    </style>
</head>

<body>
    <button type="button">提交</button>
    <div id="content"></div>
    <script>
        const btn = document.getElementsByTagName('button')[0];
        const res = document.getElementById('content');
        btn.onclick = function() {

            const xhr = new XMLHttpRequest();
            xhr.timeout = 2000;

            xhr.ontimeout = function() {
                alert('请求超时,请检查网络是否可用!');
            }

            xhr.onerror = function() {
                alert('你的网络开小差了,请重新连接网络试试');
            }

            xhr.open('GET', 'http://127.0.0.1:8080/delay');

            xhr.send();

            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4) {
                    if (xhr.status >= 200 && xhr.status < 300) {
                        res.innerHTML = xhr.response;
                    }
                } else {

                }
            }
        };
    </script>
</body>

</html>
const express = require("express");

const app = express();

// 模拟请求超时
app.all("/delay", (request, response) => {
    response.setHeader('Access-Control-Allow-Origin', '*');
    response.setHeader('Access-Control-Allow-Headers', '*');

    setTimeout(() => {
        response.send('接收成功:模拟请求超时');
    }, 3000);
})

app.listen(8080, () => {
    console.log('正在监听8080端口');
});

总结

到此这篇关于Ajax请求超时与网络异常处理的文章就介绍到这了,更多相关Ajax请求超时内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)

    使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)

    在项目中用ajax异步获取数据后有时会因为数据问题或者网络问题,页面一直显示空白,现在用加载图片来过渡这种状态,具体实例代码通过本文一起学习吧
    2016-12-12
  • 也写一个Ajax.Request类附代码

    也写一个Ajax.Request类附代码

    也写一个Ajax.Request类附代码...
    2007-08-08
  • Ajax实现页面无刷新留言效果

    Ajax实现页面无刷新留言效果

    这篇文章主要为大家详细介绍了Ajax实现页面无刷新留言效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 服务端配置实现AJAX跨域请求

    服务端配置实现AJAX跨域请求

    这篇文章主要介绍了服务端配置实现AJAX跨域请求的相关资料,需要的朋友可以参考下
    2015-02-02
  • 利用ajax传递数组及后台接收的方法详解

    利用ajax传递数组及后台接收的方法详解

    这篇文章主要给大家介绍了关于利用ajax传递数组及后台接收的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • Ajax的使用代码解析

    Ajax的使用代码解析

    Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写)。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax
    2016-11-11
  • Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)

    Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)

    这篇文章主要介绍了Ajax遍历jSon后对每一条数据进行相应的修改和删除的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • ajax请求json数据案例详解

    ajax请求json数据案例详解

    最近项目有这样一个需求,点击六大洲,出现对应的一些请求信息,展示在下面,当请求之后,第二次点击就不用再次请求了,究竟用代码怎么写呢,下面小编带领大家了解了解
    2015-09-09
  • ajax接口文档url路径的简写实例

    ajax接口文档url路径的简写实例

    前端工程师将来打交道最多的是Http API接口,此种接口会提供一个URL地址暴露在互联网上,可以通过编写Ajax代码去与之交互来完成功能,下面这篇文章主要给大家介绍了关于ajax接口文档url路径简写的相关资料,需要的朋友可以参考下
    2021-10-10
  • react axios 跨域访问一个或多个域名问题

    react axios 跨域访问一个或多个域名问题

    这篇文章主要介绍了react axios 跨域访问一个或多个域名问题,本文通过实例代码截图的形式给大家展示的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论