2022-09-01 第四组 王佳齐 学习笔记
ajax概念
ajax:异步刷新,前端技术,给后台发请求
异步:整个页面不会全部刷新只有某个局部在刷新。
四种发请求的方式:
1.form表单
2.a标签
3.地址栏
4.location.href.window.open
注意:
一、使用ajax发送请求,页面是不可以通过后台跳转的。如果需要跳转页面也是通过前端的JS来跳转,不可能是通过Servlet跳转二、ajax和form表单一定不能同时使用ajax:不跳页面form:一定要跳走两者相互冲突
请求体:post才有请求体
ajax发起请求给后台,后台的响应会回到ajax的响应处理函数中
readyState:
0:-----------xhr被创建成功,open方法未调用
1:-----------open被调用,未建立连接
2:-----------send被调用,可以获取状态行和响应头
3:-----------可以拿到响应体,响应体加载中
4:-----------响应体加载成功,可以直接使用resposeText
代表请求可以正常发送,响应可以正常接收
js中的ajax
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p> 账号:<input type="text" onblur="valid()" id="username" name="username"><span id="span"></span> </p> <script> function valid(){ let username = document.getElementById("username").value; let span = document.getElementById("span"); //向后台发送请求 //使用ajax //XMLHttpRequest是ajax的支持对象 let xhr = new XMLHttpRequest(); //设置请求方式和地址 //传参 xhr.open("GET","valid.do?username="+username); //发地址 xhr.send(null); //post请求传参 /** * //发送post请求 * xhr.open("POST","valid.do"); * //设置请求头信息 * //Content-type:选择内容类型 * xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); * //传参 * xhr.send("username="+username);*/ //指定xhr的状态变化的处理函数 xhr.onreadystatechange = function (){ //正常接收后台响应 if (this.readyState === 4){ //通过xhr的responseText获取对应的响应体 switch (this.responseText){ case "1": span.innerText="账号验证成功!"; break; case "0": span.innerText = "账号输入错误!" } } } } </script> </body> </html>
JQuery中的ajax
共有三种发送请求的方式
一、发送get请求
//1.发送get请求
$.get("valid.do?username=" + username,function(data) {
// data就是后台回来的响应体
console.log(data);
if(data == "1") {
$("#msg").html("用户名可用...")
}
if(data == "0") {
$("#msg").html("用户名已存在...")
}
});
二、发送post请求
//2.发送post请求
$.post("valid.do","username=" + username,function (data) {
if(data == "1") {
$("#msg").html("用户名可用...")
}
if(data == "0") {
$("#msg").html("用户名已存在...")
}
});
三、完整写法,JQuery中的ajax
$.ajax({
url: "valid.do",
type: "post",
data: formData,
success : function(res) {
console.log(res);
},
error : function(res) {
console.log(res);
}
});
注意:这里的formData需要在jquery-3.0.0.min.js版本中才好使
formData: formData构建一个表单数据对象
formData是JS的内置对象,和JQuery无关,和Vue无关
firmData使用方法:
let formData = new FormData();
formData.append("username",username);
formData.append("password",password);
axios:对原生的ajax的一个封装,独立
特点:发送的get请求,如果带参,还是一个默认的一文档流发送,和之前的任何一种请求方式没有任何不同;
但是如果发送的是post请求,会把文档流转成json串再传送给后台;
而那个方法只认识文档流默认字符串,所以想要接收axios中的post请求需要用缓冲字符输入流;
BufferReader reader = request.getReader();
String line = reader.readLine;
注意:但也不一定
一、get请求,后台没有对应的对象来封装,不能有私密数据。比如分页查询。
二、post请求,后台往往都是有对象跟着的,数据数据之间有关系,能够封装成对象。

浙公网安备 33010602011771号