js之AJAX

ajax 是一种创建交互式网页应用的网页开发技术。其中最核心的依赖是浏览器提供的XMLHttpRequest 对象,是这个对象使得浏览器可以发出 HTTP 请求与接收 HTTP 响应。实现了在页面不刷新的情况下和服务器进行交互

|----------------------------------|----------------------------------------------------------------------|
| new XMLHttpRequest() | 生成一个 XMLHttpRequest 对象 |
| open('请求类型' , 'URL' , '请求方式') | 1. 请求类型:get、post 2. 请求地址:服务器(文件)位置 3. 请求方式:true 为异步,false 为同步 |
| send() | 发送请求 |
| onreadystatechange | 该方法可以定义响应执行函数,当 readyState 属性发 生变化时会自动调用该方法。 |
| readyState | 交互流程,有 5 个阶段 1. 请求初始化 2. 服务器链接已建立 3. 请求已接收 4. 正在处理请求 5. 请求已完成且响应已就绪 |
| status | HTTP 响应状态码 200 :OK(请求成功) 403 :Forbidden(禁止) 404 :Page not found(未找到) |
| responseText | 响应文本(返回的数据) |
| setRequestHeader('头部名称' , '头部值') | 请求头,向请求添加 HTTP 头部 |

ajax使用方法

javascript 复制代码
<script>
			let xhr = new XMLHttpRequest();
			xhr.open('get', 'js/index.json', true);
			xhr.send();
			xhr.onreadystatechange = function() {
				if (xhr.readyState == 4 && xhr.status == 200) {
					let text = xhr.responseText;
					console.log(text);
					let data = JSON.parse(text);
					console.log(data);
				}
			};
		</script>

post请求方式

javascript 复制代码
<script>
	let obj = {
		phone_number: "15836028325",
		password: "111111"
	}
	// 1. 创建对象
	let xhr = new XMLHttpRequest();
	// 2. 创建请求
	xhr.open("POST", "https://zx.nh2r.top/api/admin/login", true);
	// 3. 设置 Content-Type 属性(固定写法)
	xhr.setRequestHeader('Content-Type', 'application/json');
	// 4. 发送请求,同时将数据以查询字符串的形式,提交给服务器
	xhr.send(JSON.stringify(obj));
	// 5. 监听 onreadystatechange 事件,接收响应数据
	xhr.onreadystatechange = function() {
		if (xhr.readyState === 4 && xhr.status === 200){
			console.log(JSON.parse(xhr.response));
}
	}
</script>
get post 的区别:
  1. get 是将参数包含在 URL 中明文传输,不安全。而 post 是通过 request body 传递参数, 对于用户来说是不可见的,所有更安全。
  2. get 传输数据量较小,因为 URL 有长度限制,post 传输的数据量较大,一般被默认为不受限制。
  3. 对于参数的数据类型,get 只接受 ASCII 字符,而 post 没有限制。
  4. get 请求时只会产生一个 TCP 数据包,get 比 post 更快。
  5. get 请求参数会被完整保留在浏览器历史记录里,而 post 中的参数不会被保留。
同步与异步的区别:

同步:在进程中任务未结束时,需等待结束才能执行下一个任务。

例如:在高速上,只有一条车道,如果前方发生车祸,那么后方的车需要等待前方 处理好才能继续通行。

异步:在进程中任务未结束但在等待的过程中可以先去执行下一个任务。

例如:还是在高速上,有两条车道,如果前方发生车祸,那么后方的车可以从另一 条车道继续通行。

相关推荐
冠希陈、3 分钟前
PHP 判断是否是移动端,更新鸿蒙系统
android·开发语言·php
HDO清风24 分钟前
CASIA-HWDB2.x 数据集DGRL文件解析(python)
开发语言·人工智能·pytorch·python·目标检测·计算机视觉·restful
2201_7569890924 分钟前
C++中的事件驱动编程
开发语言·c++·算法
会飞的战斗鸡30 分钟前
JS中的链表(含leetcode例题)
javascript·leetcode·链表
多米Domi01135 分钟前
0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency
开发语言·数据结构·python·算法·leetcode·面试
2301_8223776536 分钟前
模板元编程调试方法
开发语言·c++·算法
csbysj202039 分钟前
Python 循环嵌套
开发语言
测试_AI_一辰42 分钟前
Agent & RAG 测试工程05:把 RAG 的检索过程跑清楚:chunk 是什么、怎么来的、怎么被命中的
开发语言·人工智能·功能测试·自动化·ai编程
Coding茶水间44 分钟前
基于深度学习的输电电力设备检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
清风~徐~来1 小时前
【视频点播系统】BRpc 介绍及使用
开发语言