五、手动取消ajax请求 解决重复发送请求问题
server.js:
// 1. 引入express
const express = require('express')// 2. 创建应用对象
const app = express()// 3. 创建路由规则
app.get('/server', (request, response) => {// 设置响应头 设置允许跨域response.setHeader('Access-Control-Allow-Origin', '*')// 设置响应体response.send('hello ajax!!!')
})// all 可以接收任意类型的请求
app.all('/server', (request, response) => {// 设置响应头 设置允许跨域response.setHeader('Access-Control-Allow-Origin', '*')// 允许前端post请求 自定义请求头名称response.header('Access-Control-Allow-Headers', '*');// 设置响应体response.send('hello ajax post')
})app.all('/json-server', (request, response) => {// 设置响应头 设置允许跨域response.setHeader('Access-Control-Allow-Origin', '*')// 允许前端post请求 自定义请求头名称response.header('Access-Control-Allow-Headers', '*');// 响应一个数据const data = {name: 'zep'};// 对 对象进行字符串转换let str = JSON.stringify(data)// 设置响应体,send方法只接收字符串类型的参数response.send(str)
})// 专门针对IE缓存
app.get('/ie', (request, response) => {// 设置响应头 设置允许跨域response.setHeader('Access-Control-Allow-Origin', '*')// 设置响应体response.send('hello ie3!!!')
})// 延时响应
app.get('/delay', (request, response) => {// 设置响应头 设置允许跨域response.setHeader('Access-Control-Allow-Origin', '*')// 设置定时器,当客户端发起请求时,服务端延迟3s再将响应数据发给客户端setTimeout(() => {// 设置响应体response.send('hello 延迟响应3秒!!!')}, 3000)})// 4. 监听端口 启动服务
app.listen(8000, () => {console.log('服务已经启动,8000端口监听中...')
})
1. 取消请求
2. 解决重复发送请求问题
增加一个标识变量 isSending
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>AJAX 重复请求 请求</title><style type="text/css">#result {width: 200px;height: 100px;border: 1px solid pink;}</style></head><body><button>点击发送请求</button><button>点击取消请求</button> <script>// 获取button元素const btns = document.querySelectorAll('button');let xhr = null;// 标识变量let isSending = false; // 是否正在发送AJAX请求// 绑定事件btns[0].onclick = function() {// 如果正在发送,则取消该请求,创建一个新的if(isSending) {xhr.abort();}// 1.创建对象xhr = new XMLHttpRequest();// 修改标识变量的值isSending = true;// 2.初始化 设置请求方法 和 urlxhr.open('GET', 'http://127.0.0.1:8000/delay');// 3.发送xhr.send();// 4.事件绑定,处理服务端返回的结果xhr.onreadystatechange = function() {if(xhr.readyState === 4) {// 修改标识变量isSending = false;}}}btns[1].onclick = function () {// 取消请求xhr.abort()}</script></body>
</html>
五、手动取消ajax请求 解决重复发送请求问题相关推荐
- AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)
根据视频进行整理 [https://www.bilibili.com/video/BV1WC4y1b78y?p=1] 视频资料 百度网盘: 链接:[https://pan.baidu.com/s/1n ...
- jQuery使用ajax错误的重复发送请求的解决办法
开发过程中,发现jQuery中的ajax原本应该只发送一次请求,事实上却连续发送了多次. 解决办法是,在发送前作一个标记,检测是否已经发送过,成功或者失败再收回标记. var th = $(this) ...
- java 防止url重复请求_Web项目如何防止客户端重复发送请求
在Web项目中,有一些请求或操作会对数据产生影响(比如新增.删除.更新),针对这类请求一般都需要做一些保护,以防止用户有意或无意的重复发起这样的请求导致的数据错乱. 本文总结了一些防止客户端重复发送请 ...
- AJAX避免用户重复提交请求
在使用AJAX(jQuery)异步请求数据时,为了避免因某些原因用户同时多次点击按钮,提交重复的请求,我们需要禁用请求提交按钮. 重点:jQuery的 attr 和 removeAttr 两个函数,主 ...
- Ajax请求,JQuery发送请求,Axios请求,Fetch请求总结
常见的请求方式 1.Ajax请求 定义: 同步与异步的区别: Ajax的工作原理: 实现AJAX的基本步骤: Get请求: Post请求: 2.JQuery发送请求 Get请求: Post请求: 3. ...
- tab 触发ajax请求,防止重复发送ajax请求的思索
原标题:防止重复发送ajax请求的思索 防止重复发ajax请求是平时开发中遇到频次较高的问题了.我通常解决方案有如下几种, 1.UI限制 点击完按钮后,就禁用按钮, 并开启显示等待动画,收到服务器的成 ...
- ajax向服务端发送请求验证用户名是否可用小示例
使用ajax向服务器发送请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- axios请求失败、请求超时重新发送请求
一. axios重新发送请求基础版(所有的请求错误,不论是请求超时还是接口请求出错都会进行重试) 以下是一个完整的文件,看懂了的话axios重试请求也就基本会了,不会的话直接复制到项目里,也可以直接调 ...
- ajax 直接向后台发送请求,通过ajax异步向后端发送请求,响应请求向前端传送json格式数据的实现思路...
一.前端异步请求代码: $.ajax ({ type: "POST",//请求的方式 url: "outputservlet3",//请求url data: { ...
最新文章
- QQ被曝自动读取浏览器记录,Chrome、Edge和360等无一幸免
- pugixml读取unicode编码的xml文件的做法
- flask html 得到文本框 input的内容_【笔记7】HTML及其常见标签
- wprintf显示中文
- powerdesigner mysql 反引号_PowerDesigner实用技巧小结 及 导出word,想字段顺序跟模型中一致,如何设置...
- Mysql5.7读写分离
- sql语句练习(三):LeetCode
- bzoj 2821:作诗 分块
- node服务的监控预警系统架构 1
- 不可阻挡的PowerShell :Red Teamer告诉你如何突破简单的AppLocker策略
- Wince 设备环境和画笔应用
- Python import上一层级的模块
- android 9坚果r1,坚果R1、小米MIX2S、一加6对比评测 骁龙845旗舰怎么选?
- Laravel每日一记
- winhex常用快捷键
- 基于卡方分布的独立性检验
- 预估期刊2021年的影响因子
- 这些电脑软件堪称惊艳,你一定用得上【建议收藏】
- redis分布式事务锁
- 【微信小程序开发】第 1 节 - 小程序简介