01-认识ajax
网页不刷新就可以获取数据
-
在网站输入关键字会提示
-
注册页面,用户名被使用过会提醒
-
京东网站,鼠标点击一级目录会显示二级目录
02-HTTP
- HTTP 全称为 Hypertext Transfer Protocol,翻译为中文是“超文本传输协议”的意思,它是互联网中应用最为广泛的一种网络协议。
请求 内容:报文
请求包括四部分:
1)请求 行 请求类型:GET/Post;优化路径URL;HTTP版本:1.1
2)请求 头 格式——名字:空格+值
Host: atbaidu.com
Cookie: name=baidu
Content-type: application/ x-www-from-urllencoded
User-Agent: chrome 83
3)请求 空行 必须得有
4)请求 响应体 GET请求:请求体为空;Post请求:请求体可以不为空
username=admin&password=admin
响应 结果:报文
四部分:
1)行 HTTP版本:1.1;响应状态码:200;响应状态字符串:OK
2)头 格式——名字:空格+值
Content-Type: text/html;charset=utf-8
Content-length: 2048
Content-encoding: gzip
3)空行 必须得有
4)响应体 <html>
<head>
</head>
<body>
<h1>我是一个孤独的h1</h1>
</body>
</html>
* 200表示 OK
* 404 服务器找不到请求的资源
* 500 服务器遇到了不知道如何处理的情况
- get请求:
- post:
03-Express框架
-
Express向服务器发请求
-
在终端里:node +文件名 启动服务
-
打开浏览器测试:127.0.0.1:8900
-
敲回车的一刹那发送的请求如下:
04-ajax案例 (发送GET请求)
01-请求发送前的准备
前端页面准备
- HTML
- 需求:点按钮发请求,结果在div中呈现
服务端代码准备
- JS
端口(相当于服务窗口)被使用:
- 在终端里:把cmd转成node,表示03-Express中还在使用端口
- ctrl+c 释放前面的端口
- 释放窗口后重新启动 node +文件名
- 打开浏览器测试:127.0.0.1:8900/server
- 名字和值
02-AJAX请求的基本操作
- 结果在div中呈现
03-AJAX设置请求参数
- url地址后边缀参数 ?xxx&xxx&xxx
- 查看效果
05-发送POST请求
- 需求:鼠标放在div上时发POST请求,结果(响应体)在div中呈现
- 还需要将JS代码中的GET换成POST,不然不匹配 报错
- 每一次JS代码修改后都需要重新启动服务
01-AJAX设置请求参数
- 请求体在send里设置 三种方法...比较灵活
- 查看效果
06-AJAX设置请求头信息
- 使用预定义的头
- 查看效果,请求头中:
自定义请求头
- 第一步 HTML中
- 第二步 JS中
- 查看效果
07-服务端响应JSON数据
JS代码
- 1.手动对数据做转化
- 2.自动转换
08-安装nodemon
-
JS代码修改后自动重启服务,不需要手动重启
安装:npm install -g nodemon 安装完之后,用nodemon +文件名 重新启动
09-IE缓存问题
- ie浏览器中存在数据缓存,最新结果无法呈现,发送的是自己内部缓存的结果
解决方法:
- 获取时间戳
10-AJAX请求超时与网络异常处理
请求超时:
- 设置2秒超时提醒
网络异常:
- 检验方法:把online改成offline
11-AJAX取消请求——abort
- 请求过程中:在结果没回来前,可以利用代码手动取消请求
12-AJAX请求重复发送问题
-
问题:每点击一次就会创建一个请求
-
解决:第二次点,把上一次没完成的请求关掉
标识变量: let inSending = false; // 是否正在发送AJAX请求 // false 标识没有发;true 正在发
- 效果:
13-jQury发送AJAX请求方法
引进jQury资源: https://www.bootcdn.cn/ 搜索 jquery
01-GET
- 加上Json 结果转成字符串
02-POST
- 没加Json 不会转字符串
- GET加了json POST没加json 对比
03-通用型发送AJAX
- 个性化需求查找网站:jquery.cuishifeng.cn/
14-Axios发送AJAX请求
- 引入资源www.bootcdn.cn/ 搜索 axios
- JS代码
01-GET方式
02-POST方式
03-Axios函数(通用型)发送AJAX
14-使用fetch发送AJAX请求
15-跨域
01-AJAX同源策略
- 同源:协议、域名、端口,必须完全相同。同源——同一来源
- 违背同源策略就是跨域
- AJAX在发送请求时,默认遵循同源策略
02-解决跨域——JSONP
- 返回结果是一个函数调用,函数的实参是想给客户端返回的结果数据
- 函数必须要在前端提前声明,否则没有函数会报错
03-jQuery发送jsonp请求
- cd就是callback的值
04-设置CORS响应头实现跨域
- 只需要加上响应头即可