1.概念
ASynchronous JavaScript And XML 异步的JavaScript 和 XML
-
异步和同步:客户端和服务器端相互通信的基础上
* 客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
* 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 [1]
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。
提升用户的体验
2.实现方式
1. 原生的JS实现方式(了解)
2. JQeury实现方式
1. $.ajax()
* 语法:$.ajax({键值对});
//使用$.ajax()发送异步请求
$.ajax({
url:"ajaxServlet1111" , // 请求路径
type:"POST" , //请求方式
//data: "username=jack&age=23",//请求参数
data:{"username":"jack","age":23},
success:function (data) {
alert(data);
},//响应成功后的回调函数
error:function () {
alert("出错啦...")
},//表示如果请求响应出现错误,会执行的回调函数
dataType:"text"//设置接受到的响应数据的格式
});
2. $.get():发送get请求
* 语法:$.get(url, [data], [callback])
* 参数:
* url:请求路径
* data:请求参数
* callback:回调函数
3. $.post():发送post请求
* 语法:$.post(url, [data], [callback])
* 参数:
* url:请求路径
* data:请求参数
* callback:回调函数
3.案例
package com.zhongruan.web;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@WebServlet("/findUserNameSerlvet")
public class FindUserNameServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("username");
System.out.println(name);
//相应格式为Json
response.setContentType("application/json;charset=utf-8");
Map<String, Object> map = new HashMap<>();
if ("tom".equals(name)) {
// response.getWriter().print("1");
System.out.println("1111");
map.put("userExsit", true);
map.put("msg", "存在");
} else{
System.out.println("2222");
map.put("userExsit", false);
map.put("msg", "可用");
// response.getWriter().print("2");
}
//定义json对象
ObjectMapper mapper = new ObjectMapper();
//把map集合转化为json字符串
mapper.writeValue(response.getWriter(), map);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
/* window.onload = function () {
};*/
$(function () {
$("#username").blur(function () {
var username = $(this).val();
$.get("findUserNameSerlvet", {username: username}, function (data) {
alert(data);
var span = $("#user_msg");
if (data.userExsit) {
span.css("color", "red");
span.html(data.msg);
} else {
span.css("color", "green");
span.html(data.msg);
}
})
})
})
</script>
</head>
<body>
<table align="center">
<tr>
<td>用户名1111</td>
<td><input type="text" name="username" align="center" id="username">
<span id="user_msg"></span>
</td>
</tr>
<tr>
<td>密码 </td>
<td><input type="password" name="password"></td>
</tr>
</table>
</body>
</html>