2.1js原生的Ajax:
js原生的Ajax開發(fā)步驟:
創(chuàng)建Ajax引擎對象
為Ajax引擎對象綁定監(jiān)聽(監(jiān)聽服務器已將數據響應給引擎)
綁定提交地址
發(fā)送請求
監(jiān)聽里面處理響應數據
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css"></style>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
//同步請求點擊事件
function sendRequest() {
//js刷地址欄請求服務器端
location.href = "Ajax1Servlet?name=admin&password=123abc";
}
//異步請求點擊事件
function sendAsynRequest() {
//1.創(chuàng)建ajax引擎對象
var xmlHttp = new XMLHttpRequest();
//2.設置回調函數,目的是處理服務器完全返回的數據
xmlHttp.onreadystatechange = function () {
/**
* 這個回調函數什么調用呢?是ajax引擎對象與服務器通信狀態(tài)碼改變的時候調用
* ajax引擎對象與服務器通信狀態(tài)碼xmlHttp.readystate,范圍0~4
* 0:請求未初始化
* 1:服務器連接已建立
* 2:請求已接收
* 3:請求處理中
* 4:請求已完成,且響應已就緒
* 這個回調函數一共被調用4次,但只有狀態(tài)碼4的時候才代表服務器響應完成數據完成。
* ajax引擎通信轉態(tài)碼為4和http通信轉態(tài)碼為200
*/
if(xmlHttp.readyState==4 && xmlHttp.status==200){
//獲取響應數據
var content = xmlHttp.responseText;
alert(content);
}
}
//3.設置請求路徑和請求參數
/**
* xmlHttp.open(method,url)
* method,請求方法,get或post請求
* url:請求路徑
*/
xmlHttp.open("get","Ajax1Servlet?name=admin&psw=abc123");
//4.發(fā)送請求
xmlHttp.send();
}
</script>
</head>
<body>
<input type="button" value="發(fā)送同步請求" onclick="sendRequest();"/>
<input type="button" value="發(fā)送異步請求" onclick="sendAsynRequest();"/>
</body>
</html>
package com.sunny.web;
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(name = "Ajax1Servlet", urlPatterns = "/Ajax1Servlet")
public class Ajax1Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//獲取請求參數
String name = request.getParameter("name");
String password = request.getParameter("password");
//打印出來
System.out.println("name=" name);
System.out.println("password=" password);
//輸出數據前端
response.getWriter().write("hello js ajax");
}
}
2.2 Ajax引擎連接狀態(tài)readyState值0~4變化過程:
存有 XMLHttpRequest 的狀態(tài)。從 0 到 4 發(fā)生變化。0: 請求未初始化1: 服務器連接已建立2: 請求已接收3: 請求處理中4: 請求已完成,且響應已就緒
這里狀態(tài)值4只能說明接收到了服務器的響應服務器處理ajax請求結束,但是不能代表正確的獲取了服務器的響應,需要配合http狀態(tài)碼200兩個條件就可以說明正確的獲取了服務器響應。只有這兩個條件滿足,xmlhttp.responseText才可以獲取到正確的響應數據。
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
alert("響應數據" xmlhttp.responseText);
}
}
};
相關學習推薦:javascript學習教程
更多關于云服務器,域名注冊,虛擬主機的問題,請訪問西部數碼官網:m.ps-sw.cn