这是我参与「第四届青训营 」笔记创作活动的第11天
最近在做项目时 发现对AJAX有点遗忘😵 于是打算复习并记录一下💾
AJAX
Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术
传统网页想要更新内容或提交表单都需要重新加载整个网页
使用ajax技术的网页 通过再后台服务器进行少量的数据交换 就可以实现异步局部更新
增强B/S的体验性
B/S 未来的主流,并且会爆发时的持续增长
H5+网页+客户端+手机端(安卓 、IOS)+小程序
优点
-
无需刷新页面与服务器端进行通信
-
允许你根据用户事件来更新部分页面内容
缺点
-
没有浏览历史,不能回退
-
存在跨域问题(同源
-
SEO不友好
jQuery
先导入js文件
jQuery.get()
参数
- url 待载入地址
- data 待发送key/value参数
- success 载入成功时回调函数
- dataType 返回内容格式 xml,json,script,text,html
jQuery.post()
jQuery.getJSON()
jQuery.ajax()
- url 请求地址
- data 要发送的数据
- success 成功之后执行的回调函数 (全局
HTTP
HTTP协议(超文本传输协议),详细规定了浏览器和万维网服务器之间互相通信的规则。
请求报文
重点是格式和参数
行 GET(体空) POST(可设置请求体) / http/1.1
头 Host: .com
Cookie: name=xx
Content-type: application/x-www-form-urlencoded
User-Agent: chrome 83
空行
体 username=admin&password=admin
响应报文
行 HTTP/1.1 200 404 OK
头 Content-Type:
Content-length:2048
空行
体
jQuery通用方法ajax
$('button').eq(0).click(function () {
//参数 1 给谁发 2 发什么 3回调 4响应体的类型
$.get('http://127.0.0.1:8000/JQ',{a:100,b:200},function (data) {
console.log(typeof data);
},'json');
})
$('button').eq(1).click(function () {
//参数 1 给谁发 2 发什么 3回调 4响应体的类型
$.post('http://127.0.0.1:8000/JQ',{a:100,b:200},function (data) {
console.log(typeof data);
})
})
$('button').eq(2).click(function () {
$.ajax({
//url
url:'http://127.0.0.1:8000/JQ',
//参数
data:{a:100,b:200},
//类型
type:'GET',
//响应体结果设置
dataType:'json',
//成功的回调
success:function(data){
console.log(typeof data);//可对响应体进行操作
},
//超时时间
timeout:2000,
//失败的回调
error:function () {
console.log("警告警告")
},
//头信息
headers:{
c:300,
d:400
}
});
})
axios通用方法ajax
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>axio 发送ajax</title>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.26.1/axios.min.js"></script>
<script>
window.onload=function () {
const btn=document.querySelectorAll("button");
//配置 baseURL
axios.defaults.baseURL='http://127.0.0.1:8000';//简化url路径
btn[0].onclick=function () {
//GET请求
axios.get('/axios',{
//url 参数
params:{
id:100,
vip:7
},
//请求头信息
headers:{
name:'abc',
age:20
}
}).then(value=>{
console.log(value);
});
}
btn[1].onclick=function () {
//POST请求 第二个参数为请求体 axios.post(url,data,)
axios.post('/axios',{
username:'admin',
password:'123456'
},{
//url 参数
params:{
id:130,
vip:72
},
//请求头信息
headers:{
name:'bcd',
age:24
},
})
};
btn[2].onclick=function () {
axios({
//请求方法
method:"post",
//url
url:'/axios',
//url 参数
params:{
ad:12,
bc:34,
fg:33
},
//头信息参数
headers:{
a:100,
b:200
},
//请求体参数
data:{
username:'admin',
password:'123456'
}
}).then(a=>{
console.log(a);//处理返回结果
//响应状态码
console.log(a.status);
//响应状态字符串
console.log(a.statusText);
//响应头信息
console.log(a.headers);
//响应体
console.log(a.data);
})
}
}
</script>
</head>
<body>
<button>GET</button>
<button>POST</button>
<button>AJAX</button>
</body>
</html>
JSONP
JSON with Paddin 非官方 只支持get请求
CORS
跨域资源共享,CORS是官方的跨域解决方案,他的特点是不需要在客户端做任何操作,完全在服务端中进行处理,支持get post请求
跨越资源共享标准新增了一组HTTP首部字段(响应头),允许服务器声明哪些源站通过浏览器有权限访问哪些资源
💭💭💭
记录前端学习中的问题📜
若本文对你有帮助 欢迎点赞收藏👍📑
若有纰漏,敬请包涵,评论区欢迎指正👂