ajax發送異步請求——GET方式

首先,咱們新建一個和web項目,而後新建一個servlet我,咱們命名爲AServlt,而後寫入以下代碼:javascript

 1 package cn.cuibusi.servlet;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import java.io.IOException;
 9 
10 /**
11  * Created by cuibusi on 2017/4/20.
12  */
13 @WebServlet("/AServlet")
14 public class AServlet extends HttpServlet {
15     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16         System.out.println("Hello AJAX");
17         response.getWriter().print("Hello AJAX!!!");
18     }
19 }

而後,咱們的服務器端就創建完畢了。java

咱們再新建一個jsp頁面,命名爲ajaxdemo.jsp,加入一個按鈕和一個h1標籤,意圖是在咱們點擊按鈕時發送異步請求,而後經過h1標籤來顯示服務器端發回來的消息:web

1   <body>
2   <button id="btn">點擊這裏</button>
3   <h1 id="h1"></h1>
4   </body>

接下來就是咱們核心的js代碼,代碼以下,步驟都在註釋裏:ajax

 1 <script type="text/javascript">
 2         // 建立異步對象
 3         function createXMLHttpRequest() {
 4             try {
 5                 return new XMLHttpRequest();//大多數瀏覽器
 6             } catch (e) {
 7                 try {
 8                     return ActvieXObject("Msxml2.XMLHTTP");//IE6.0
 9                 } catch (e) {
10                     try {
11                         return ActvieXObject("Microsoft.XMLHTTP");//IE5.5及更早版本
12                     } catch (e) {
13                         alert("哥們兒,您用的是什麼瀏覽器啊?");
14                         throw e;
15                     }
16                 }
17             }
18         }
19 
20         window.onload = function() {//文檔加載完畢後執行
21             var btn = document.getElementById("btn");
22             btn.onclick = function() {//給按鈕的點擊事件註冊監聽
23               /*
24                ajax四步操做,獲得服務器的響應
25                把響應結果顯示到h1元素中
26                */
27               /*
28                1. 獲得異步對象
29                */
30                 var xmlHttp = createXMLHttpRequest();
31               /*
32                2. 打開與服務器的鏈接
33                * 指定請求方式
34                * 指定請求的URL
35                * 指定是否爲異步請求
36                */
37                 xmlHttp.open("GET", "<c:url value='/AServlet'/>", true);
38               /*
39                3. 發送請求
40                */
41                 xmlHttp.send(null);//GET請求沒有請求體,但也要給出null,否則FireFox可能會不能發送!
42               /*
43                4. 給異步對象的onreadystatechange事件註冊監聽器
44                */
45                 xmlHttp.onreadystatechange = function() {//當xmlHttp的狀態發生變化時執行
46                     // 雙重判斷:xmlHttp的狀態爲4(服務器響應結束),以及服務器響應的狀態碼爲200(響應成功)
47                     if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
48                         // 獲取服務器的響應結束
49                         var text = xmlHttp.responseText;
50                         // 獲取h1元素
51                         var h1 = document.getElementById("h1");
52                         h1.innerHTML = text;
53                     }
54                 };
55             };
56         };
57     </script>

最後,咱們來看一下運行效果:瀏覽器

相關文章
相關標籤/搜索