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请求 解决重复发送请求问题相关推荐

  1. AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)

    根据视频进行整理 [https://www.bilibili.com/video/BV1WC4y1b78y?p=1] 视频资料 百度网盘: 链接:[https://pan.baidu.com/s/1n ...

  2. jQuery使用ajax错误的重复发送请求的解决办法

    开发过程中,发现jQuery中的ajax原本应该只发送一次请求,事实上却连续发送了多次. 解决办法是,在发送前作一个标记,检测是否已经发送过,成功或者失败再收回标记. var th = $(this) ...

  3. java 防止url重复请求_Web项目如何防止客户端重复发送请求

    在Web项目中,有一些请求或操作会对数据产生影响(比如新增.删除.更新),针对这类请求一般都需要做一些保护,以防止用户有意或无意的重复发起这样的请求导致的数据错乱. 本文总结了一些防止客户端重复发送请 ...

  4. AJAX避免用户重复提交请求

    在使用AJAX(jQuery)异步请求数据时,为了避免因某些原因用户同时多次点击按钮,提交重复的请求,我们需要禁用请求提交按钮. 重点:jQuery的 attr 和 removeAttr 两个函数,主 ...

  5. Ajax请求,JQuery发送请求,Axios请求,Fetch请求总结

    常见的请求方式 1.Ajax请求 定义: 同步与异步的区别: Ajax的工作原理: 实现AJAX的基本步骤: Get请求: Post请求: 2.JQuery发送请求 Get请求: Post请求: 3. ...

  6. tab 触发ajax请求,防止重复发送ajax请求的思索

    原标题:防止重复发送ajax请求的思索 防止重复发ajax请求是平时开发中遇到频次较高的问题了.我通常解决方案有如下几种, 1.UI限制 点击完按钮后,就禁用按钮, 并开启显示等待动画,收到服务器的成 ...

  7. ajax向服务端发送请求验证用户名是否可用小示例

    使用ajax向服务器发送请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  8. axios请求失败、请求超时重新发送请求

    一. axios重新发送请求基础版(所有的请求错误,不论是请求超时还是接口请求出错都会进行重试) 以下是一个完整的文件,看懂了的话axios重试请求也就基本会了,不会的话直接复制到项目里,也可以直接调 ...

  9. ajax 直接向后台发送请求,通过ajax异步向后端发送请求,响应请求向前端传送json格式数据的实现思路...

    一.前端异步请求代码: $.ajax ({ type: "POST",//请求的方式 url: "outputservlet3",//请求url data: { ...

最新文章

  1. QQ被曝自动读取浏览器记录,Chrome、Edge和360等无一幸免
  2. pugixml读取unicode编码的xml文件的做法
  3. flask html 得到文本框 input的内容_【笔记7】HTML及其常见标签
  4. wprintf显示中文
  5. powerdesigner mysql 反引号_PowerDesigner实用技巧小结 及 导出word,想字段顺序跟模型中一致,如何设置...
  6. Mysql5.7读写分离
  7. sql语句练习(三):LeetCode
  8. bzoj 2821:作诗 分块
  9. node服务的监控预警系统架构 1
  10. 不可阻挡的PowerShell :Red Teamer告诉你如何突破简单的AppLocker策略
  11. Wince 设备环境和画笔应用
  12. Python import上一层级的模块
  13. android 9坚果r1,坚果R1、小米MIX2S、一加6对比评测 骁龙845旗舰怎么选?
  14. Laravel每日一记
  15. winhex常用快捷键
  16. 基于卡方分布的独立性检验
  17. 预估期刊2021年的影响因子
  18. 这些电脑软件堪称惊艳,你一定用得上【建议收藏】
  19. redis分布式事务锁
  20. 【微信小程序开发】第 1 节 - 小程序简介

热门文章

  1. linux我如何查看一个脚本的路径,linux获取shell脚本所在绝对路径操作介绍
  2. 如何确定autosar的版本_AUTOSAR编码指南(中文版)
  3. 使用 gunicorn 部署flask项目
  4. 远程控制python
  5. 8数据提供什么掩膜产品_博硕能为你提供什么产品?
  6. 小程序mpvue图片绘制水印_开发笔记:使用 mpvue 开发斗图小程序
  7. Ubuntu 键盘错位解决 更改键盘布局
  8. 接口测试工具-fiddler的运用
  9. CentOS 6.8 虚拟机安装详解
  10. 2017模拟赛:还款计算