如何取消ajax请求

article/2025/9/20 22:27:01

之前在面试的时候,被面试官问到了如何取消ajax请求,然鹅并不知道,被刷之后痛定思痛,总结了原生XHR、jquery、axios取消ajax请求的方法。

原生XHR

对于原生XHR对象来说,取消的ajax的关键是调用XHR对象的.abort()方法

var native = new XMLHttpRequest();
native.open("GET","https://api.github.com/");
native.send();
native.onreadystatechange=function(){if(native.readyState==4&&native.status==200){console.log(native.response);           }else{console.log(native.status);}
}
native.abort();

下面两张图是有没有取消语句在控制台中的输出
这里写图片描述
这里写图片描述

jQuery

jQuery为我们封装了ajax请求接口,在jQuery中,取消ajax请求也是通过调用.abort()方法,只不过操作的对象不再是原生XHR对象

var jp = $.ajax({type:"get",url:"https://api.github.com/",dataType:"json",success:function(data){console.log(data);},error:function(err){console.log(err);}
})
jp.abort();

取消ajax之后,jQuery封装的ajax对象就会执行error对应的函数
这里写图片描述

axios

如果我们经常使用vue等框架的话,就会使用axios发送ajax请求。在axios中取消ajax请求不同于上面两种形式,在axios中是通过axios.CancelToken.source()方法取消请求

var CancelToken = axios.CancelToken;
var source = CancelToken.source();axios({method:"GET",url:"https://api.github.com/",cancelToken:source.token//cancelToken的值起标识作用,标识由source控制的、将要被取消的ajax操作
}).then((res) => {console.log(res.data);
}).catch((err) => {console.log(err);
});source.cancel('Operation canceled by the user.');

这样子,在控制台中的输出就是
这里写图片描述
但如果我们有多个通过axios发送的ajax请求,需要精准的取消掉指定的请求应该这么做呢?在上面的代码中有注释“cancelToken的值起标识作用,标识由source控制的、将要被取消的ajax操作”,下面的栗子会更加清楚的展示cancelToken的作用

var CancelToken = axios.CancelToken;var source = CancelToken.source();
axios({method:"GET",url:"https://api.github.com/",cancelToken:source.token
}).then((res) => {console.log(res.data);
}).catch((err) => {console.log(err);
});var custom = CancelToken.source();
axios({method:"GET",url:"https://api.github.com/",cancelToken:custom.token
}).then((res)=>{console.log(res.data);
}).catch((err)=>{console.log(err);
});source.cancel('Operation canceled by the user.');
custom.cancel('精确取消');

这段代码在上一段代码的基础上添加了一个ajax请求,控制台中输出如下
这里写图片描述
这样就可以在合适的时候准确取消指定的ajax请求。


http://chatgpt.dhexx.cn/article/wW4CiBDb.shtml

相关文章

HTML AJAX请求调用

html ajax请求 ------------------温故而知新,可以装逼矣-------------------- 大佬提出需求,访问html文件,动态响应文章内容 作为一个纯正(半吊子)的JAVA后端写太多前后端分离的项目,太久没接触前端知识。头都是炸的…

ajax请求五个步骤!

ajax请求五个步骤! 今天 咱们讲一讲Ajax请求五个步骤! 1.创建XMLHttpRequest异步对象 var xhr; if (window.XMLHttpRequest){// code for IE7, Firefox, Chrome, Opera, Safarixhrnew XMLHttpRequest();} else{// code for IE6, IE5xhrnew ActiveXObje…

jquery(五)Ajax请求

在jQuery中AJAX的写法有3种,$ajax,$post,$get这三种。其中$post和$get是简易写法,高层的实现,在调用他们的时候,会运行底层封装好的$ajax。 ajax写法 $.ajax({url:"http://www.microsoft.com",…

Ajax请求参数

Ajax请求参数 GET请求参数的传递创建服务器通过表单访问服务器 POST请求参数的传递application/x-www-form-urlencoded参数的接收与发送创建服务器通过表单访问服务器 JSON格式数据的发送与接收创建服务器通过表单访问服务器 GET请求参数的传递 设置open()方法中的第1个参数为…

Ajax请求以及发送Ajax请求的方式

1.在写C语言时候,写了好长时间,终于开始运行了,结果出现了这种情况,以前就没见过。 原来是自己的函数名写错了,main写成了amin.所以写代码一定要细心,不然会给你带来很失望的心情。 2.Ajax请求步骤 //1.创…

html的ajax请求

页面中ajax发起请求,controller接收数据并处理 这次ajax的测试以访问html的方式配置 配置yml文件: 然后在 src/main/webapp下创建一个html页面 创建controller: 运行项目就可以访问到index.html: 引入jquery: 修改…

Ajax请求详解

Ajax请求 一、什么是Ajax二、Ajax原理是什么三、Ajax的使用1.创建Ajax核心对象XMLHttpRequest(记得考虑兼容性)2.向服务器发送请求3.服务器响应处理(区分同步跟异步两种情况)①同步处理②异步处理③GET和POST请求数据区别 四、结束语五、jQuery的ajax函数…

Ajax原理一篇就够了

前言 AJAX即“Asynchronous Javascript And XML”,是指一种创建交互式网页应用的网页开发技术。AJAX 是一种用于创建快速动态网页的技术。它可以令开发者只向服务器获取数据(而不是图片,HTML文档等资源),互联网资源的传输变得前所未有的轻量级和纯粹,这激发了广大开发者的…

Ajax请求

ajax请求简介: ajax是利用前端的技术,向服务器发送一个异步请求 原有的请求在请求后需要刷新整张页面,但是用ajax请求后只需要刷新一部分页面即可; xhr基础属性: Jquery与ajax:使用$.ajax({}) Ajax的html…

Ajax请求的五个步骤

目录 Ajax请求的五个步骤 一、定义 1、什么是Ajax 2、同步与异步的区别 3、ajax的工作原理 二、实现AJAX的基本步骤 1、创建XMLHttpRequest对象 2、创建HTTP请求 3、设置响应HTTP请求状态变化的函数 4、设置获取服务器返回数据的语句 5、发送HTTP请求 6、局部更新 …

详解Ajax请求

目录 1.$.get()函数的语法 2.$.get()发起不带参数的请求 3.$.get()发起带参数的请求 4.$.post()函数的语法 5.$.post()向服务器提交数据 6.$.ajax()函数的语法 7.使用$.ajax()发起GET请求 ​8.使用$.ajax()发起POST请求 1.$.get()函数的语法 jQuery中$.get()函数的功能单…

linux下输入法,中英文自由切换,仍无法输入中文

1、安装中文输入法:yum install "Chinese Support" 2、中英文切换:Super空格 (其中Super键在Ctrl和Alt之间) 也可以直接点击右上角进行切换 3、设置输入源:如果直接选择汉语的话,即使中英文可以…

Linux配置中文输入法图文教程

原来的设置中,从中文切换到英文或者从英文切换为中文(跨语言)时,总要使用不同的快捷键。在这个教程中,我们将使用controlshift来完成所有输入法的切换(无论是否跨语言)。 首先在键盘设置中&…

「 Linux 」“安装中文输入法方法”讲解

一、前言 每重装一次Linux系统都会被中文输入法打扰一下,把安装方法记录下来吧,方便操作。 二、技术实现 1. 点击屏幕右上角的螺丝口,选择“System Settings”; 2. 点击“Language suport”: 3. 弹出语言支持安装窗口…

【Linux】安装中文输入法

目录 1.安装中文输入2.设置输入法快捷键切换 1.安装中文输入 命令:sudo apt-get install ibus-pinyin 输入命令后重启一下:reboot 添加之后就可以在右上角选择了 2.设置输入法快捷键切换 右上角进入设置界面 默认的切换快捷键: 鼠标单击…

Linux不能输入中文

Linux不能输入中文 文章目录 Linux不能输入中文1 目标2 环境3 修改配置3.1 服务器编码配置 1 目标 本文针对的问题是“Ubuntu 安装中文语言包”“Ubuntu Server中文问题”,“Ubuntu更改语言环境”,“Ubuntu locale的设定”,“cannot change …

Linux之中文输入

打开linux系统的应用程序选择系统工具点击设置选择区域和语言窗口 添加汉语中文输入源 使用win空格实现切换;或shift。

linux下的中文输入法

最近折腾Ubuntu,之前一直是用英文显示系统,输入法也是Ubuntu14默认的拼音,一开始也没觉得不好,可是在vim编辑文档时 ,需要添加注释,这就显得十分不方便,所以花点时间来解决这个问题,…

ubuntu linux安装中文输入法+汉化(超详细过程)

汉化 1.打开settings 2.进入Region & Language 3.点击manage installed languages 4.点击下图按钮 5.安装简体中文 6.点击apply system-wide 7.把汉语往上移动 8.然后把formats改成china,再重启就可以了 安装中文输入法 1.ctrlaltt打开终端 2.输入sudo apt-get …

Linux.Ubuntu.中文输入法设置

Linux.Ubuntu.中文输入法设置(ibus-pinyin) Ubuntu version:ubuntu-12.04.5-desktop-amd64 安装ibus sudo apt-get install ibus IBus 全称 Intelligent Input Bus是下一代输入法框架(或者说“平台”)。 项目现托管于 Google Code - http…