ajax.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax</title>
<script>
//原生js实现ajax
function fun() {
//XMLHttpRequest 是 AJAX 的基础。
//1.创建核心对象(根据不同的浏览器版本)
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//2.建立连接
/**
* 参数:
* 1.请求参数:Get,Post
* 2.请求URL
* 3.同步或异步,async:true(异步)或 false(同步)
*/
xmlhttp.open("GET","ajaxServlet?username=tom",true); //get请求参数写在请求URL的后头,xmlhttp.send();空参传递
//3. 发送请求
xmlhttp.send();
//xmlhttp.send("username=tom"); 传递的是post请求所携带的参数
//4.接收处理服务器点的响应
//获取方式xmlhttp.responseText;当xmlhttp就绪状态发生变化时,触发onreadystatechange
xmlhttp.onreadystatechange=function()
{
/**
(1)有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
* 0: 请求未初始化
* 1: 服务器连接已建立
* 2: 请求已接收
* 3: 请求处理中
* 4: 请求已完成,且响应已就绪
(2)xmlhttp.status
*200: "OK"
* 404: 未找到页面
*/
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var responseText = xmlhttp.responseText;
alert(responseText);
}
}
}
</script>
</head>
<body>
<input type="button" value="发送异步请求" onclick="fun()">
<input type="text">
</body>
</html>
请求发送到ajaxServlet并携带请求参数,
package servlet;
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;
@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取ajax的请求参数
String username = request.getParameter("username");
//处理业务逻辑
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//2.打印username
System.out.println(username);
//3.相应
response.getWriter().write("hello : "+username);
}
}
这里的问题是,ajaxServlet设置了response,为什么ajax.html的alert(responseText);在
xmlhttp.open("GET","ajaxServlet?username=tom",true); //异步
可以弹出
xmlhttp.open("GET","ajaxServlet?username=tom",false); //同步
不可以弹出,
F12都可以获取到服务器的响应信息,