当前位置: 代码网 > it编程>前端脚本>Ajax > Ajax请求超时与网络异常处理图文详解

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

2024年05月18日 Ajax 我要评论
别用ie浏览器!!!问题当浏览器请求超时或者网络异常的时候,我们程序需要做出什么处理和反应呢?ps:代码我会在后面贴出来,思路最重要# 请求超时 首先在==express==逻辑上是这样子写的// 模

别用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请求超时内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • AJAX实现省市县三级联动效果

    AJAX实现省市县三级联动效果

    最近在学ajax做到这个省市县三级联动的案例,这里只是讲一下ajax请求的一些知识,对服务端数据.php文件就不叙述了。(tips:其实省市县三级联动只需要引入... [阅读全文]
  • Ajax实现省市县三级联动

    Ajax实现省市县三级联动

    本文实例为大家分享了ajax实现省市县三级联动的具体代码,供大家参考,具体内容如下首先建立数据库,如下所示接口省import java.util.list;pu... [阅读全文]
  • AJAX实现指定部分页面刷新效果

    AJAX实现指定部分页面刷新效果

    本文实例为大家分享了ajax实现指定部分页面刷新效果的具体代码,供大家参考,具体内容如下这个例子使用了bootstrap,jquery和nprogress进度条... [阅读全文]
  • AJAX实现注册验证用户名

    AJAX实现注册验证用户名

    本文实例为大家分享了ajax实现注册验证用户名的具体代码,供大家参考,具体内容如下功能说明当用户在注册页面输入用户名并且鼠标焦点离开输入框时,到数据表中去验证该... [阅读全文]
  • ajax实现城市三级联动

    ajax实现城市三级联动

    本文实例为大家分享了ajax实现城市三级联动的具体代码,供大家参考,具体内容如下在准备好服务器后html部分<div> <sel... [阅读全文]
  • Ajax实现局部刷新的方法实例

    Ajax实现局部刷新的方法实例

    前言最近复习了一下jquery的一些内容,特此整理一下一些能用的得到的知识点,以前才学jquery的时候压根就没有注意到那么多的细节,另外最近一直都在整理前端的... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com