Ajax请求超时与网络异常处理图文详解_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问题总结 比较全
  • prototype试用整理资料
  • mvc遇上bootstrap后的ajax表单验证
  • ajax获取php页面的返回参数,控件赋值的方法
  • ajax实现标签导航
  • ajax发送和接收请求
  • ajax实现三级联动的基本方法
  • ajax发表 读取 评论
  • ajax的get请求时缓存处理解决方法
  • js实现简单实用的ajax完整实例
  • thinkphp ajax 请求 登录超时了怎么解决
  • 如何设置ExtJS Ajax请求的超时设置之timeout属性
  • 如何设置ExtJS Ajax请求的超时设置之timeout属性
  • 如何设置ExtJS Ajax请求的超时设置之timeout属性
  • dwr ajax请求默认是多久超时
  • jquery ajax 怎么能请求超时后继续请求
  • Ajax请求在数据量大的时候出现超时的解决方法
  • jquery ajax中怎样设置请求超时的回调函数
  • ajax提交session超时跳转页面使用全局的方法来处理
  • 请问ajax请求到后台经过action处理后得到的对象集合怎么传到...
  • 在Ajax提交请求的时候出异常,谁能帮我解决下啊
  • 关于ajax请求action回调函数处理返回值的问题
  • jquery.ajax请求aspx页面,处理服务器端控件时无效果
  • 浅析jQuery Ajax请求参数和返回数据的处理
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页ajax请求在数据量大的时候出现超时的解决方法ajax问题总结 比较全prototype试用整理资料mvc遇上bootstrap后的ajax表单验证ajax获取php页面的返回参数,控件赋值的方法ajax实现标签导航ajax发送和接收请求ajax实现三级联动的基本方法ajax发表 读取 评论ajax的get请求时缓存处理解决方法js实现简单实用的ajax完整实例jquery ajax 向后台传递数组参数ajax readystate的五种状态详解jquery实现ajax定时刷新局部页面ajax中的async属性值之同步和异步ajax传递多个参数具体实现ajax获取数据然后显示在页面的实ajax获取数据中文乱码问题最简单jquery ajax中使用serialize()方自己动手打造ajax图片上传(网上没ajax 缓存问题的两种解决方法(ieie6中ajax aborted错误请求中断解决方法html5 ajax文件上传进度条如何显示ajax基础详解教程(二)ajax使用json数据格式案例一个简单的asp+ajax留言本源码下载jquery中ajax的post提交在ie下中文乱码的ajax使用不同namespace的action的方法ajax获取页面被缓存的解决方法jquery1.8版本使用ajax实现微信调用出现的前端ajax的各种与后端交互的姿势
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved