当前位置: 首页 > news >正文

Ajax复习

Ajax复习

一、简介

​ AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML。

​ 一句话总结:无刷新通信

二、 特点

  • 优点

无刷新通信

允许你根据用户事件来更新部分页面内容

  • 缺点
  1. 没有浏览历史,不能回退

  2. 存在跨域问题(同源)

  3. SEO 不友好

三、核心对象

XMLHttpRequest,AJAX 的所有操作都是通过该对象进行的。

四、jQuery 中的 AJAX

  • get 请求
$.get(url, [data], [callback], [type])url:请求的 URL 地址。data:请求携带的参数。callback:载入成功时回调函数。type:设置返回内容格式,xml, html, script, json, text, _default。
  • post请求
$.post(url, [data], [callback], [type])url:请求的 URL 地址。 data:请求携带的参数。callback:载入成功时回调函数。type:设置返回内容格式,xml, html, script, json, text, _default。

五、跨域

  • 同源策略

​ 同源策略(Same-Origin Policy)最早由 Netscape 公司提出,是浏览器的一种安全策略。同源: 协议、域名、端口号 必须完全相同

违背同源策略就是跨域

六、解决跨域

  • JSONP,通过动态创建标签、从而实现跨域。
  • CORS,服务端解决跨域。

七、其他学习点

7.1、防止重复提交方案

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>重复请求问题</title>
</head>
<body><button>点击发送</button><script>//获取元素对象const btns = document.querySelectorAll('button');let x = null;//标识变量let isSending = false; // 是否正在发送AJAX请求btns[0].onclick = function(){//判断标识变量if(isSending) x.abort();// 如果正在发送, 则取消该请求, 创建一个新的请求x = new XMLHttpRequest();//修改 标识变量的值isSending = true;x.open("GET",'http://127.0.0.1:8000/delay');x.send();x.onreadystatechange = function(){if(x.readyState === 4){//修改标识变量isSending = false;}}}// abortbtns[1].onclick = function(){x.abort();}</script>
</body>
</html>

7.1、缓存解决方案

加上时间戳,作为参数。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>IE缓存问题</title><style>#result{width:200px;height:100px;border:solid 1px #258;}</style>
</head>
<body><button>点击发送请求</button><div id="result"></div><script>const btn = document.getElementsByTagName('button')[0];const result = document.querySelector('#result');btn.addEventListener('click', function(){const xhr = new XMLHttpRequest();xhr.open("GET",'http://127.0.0.1:8000/ie?t='+Date.now());xhr.send();xhr.onreadystatechange = function(){if(xhr.readyState === 4){if(xhr.status >= 200 && xhr.status< 300){result.innerHTML = xhr.response;}}}})</script>
</body>
</html>
http://www.lryc.cn/news/137144.html

相关文章:

  • 里式替换原则(LSP)
  • mysql------做主从复制,读写分离
  • Anaconda虚拟环境跨系统迁移
  • 第四章 IRIS 编程简介 - Macros
  • 大厂考核重点:mysql索引面试题
  • MySQL使用binlog日志做数据恢复
  • USB Type-C端口集成式ESD静电保护方案 安全低成本
  • Shiro学习总结
  • AS中回退git历史版本并删除历史提交记录
  • 线性代数的学习和整理5: 矩阵的加减乘除及其几何意义
  • sqlsugar 使用TNS连接oracle
  • 用python解压zip文件
  • 代码随想录22| 216.组合总和III, 17.电话号码的字母组合
  • ITIL4—战略与指导
  • 【Spring】Spring循环依赖(超重要!!)
  • 数据分析之路应该是就此开启了
  • win10如何配置jdk环境变量
  • pm4py使用指南(非机翻)
  • ChatGPT帮助提升工作效率和质量:完成时间下降40%,质量评分上升 18%
  • 第二章 搜索
  • transform_train.json文件解析
  • Wlan——锐捷零漫游网络解决方案以及相关配置
  • 分布式锁系列之zookeeper分布式锁和mysql分布式锁
  • Ubuntu部署PHP7.4
  • WPF中的数据转换-StringFormat
  • java.lang.UnsupportedOperationException解决方法
  • docker for window更改到非系统盘的使用记录
  • day 38 | ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
  • 写得了代码,焊得了板!嵌入式开发工程师必修之代码管理方案(中)
  • Interlij IDEA 运行 ruoyi 后端项目。错误: 找不到或无法加载主类 com.ruoyi.auth.RuoYiAuthApplication