1. 程式人生 > >ajax的理解

ajax的理解

body 節點 doget ons 不能 username 表單 節點數 name屬性

文字表述什麽是ajax

  AJAX = 異步 JavaScript 和 XML,一種用於創建快速動態網頁的技術。通過在後臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

具體實踐講述ajax的運行機制

  工具

  IntelliJ IDEA,以及firefox瀏覽器、firebug插件

  新建一個項目,點擊web選項

技術分享圖片

命名

技術分享圖片

工程項目結構

技術分享圖片

首先編寫一個servlet類,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; import java.io.PrintWriter; @WebServlet(name = "AjaxServlet") public class AjaxServlet 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 { // 1.獲取參數 // 2.檢查參數是否有問題 // 3.校驗操作 // 4.和傳統應用不同之處,這一步需要將用戶感興趣的數據返回到頁面段,而不是將一個新的頁面發送給用戶
try { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); // 1.獲取參數 String old=request.getParameter("name"); // 2.檢查參數是否有問題 if(old==null||old.length()==0) { out.println("用戶名不能為空"); }else { // 3.校驗操作 String name=old; if(name.equals("lxc")){ //4.和傳統應用不同之處,這一步需要將用戶感興趣的數據返回到頁面段,而不是將一個新的頁面發送給用戶 // 寫法沒有發生變化,本質發生了變化 out.println("用戶名["+name+"]已存在,請更換"); }else { out.println("用戶名["+name+"]未被註冊,可以使用"); } } }catch(Exception e){ e.printStackTrace(); } } }
View Code

然後進行web.xml編寫

技術分享圖片

然後創建一個ajax.html文件,

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>李賢春</title>
    <script type="text/javascript" src="jslib/jquery-1.11.0.min.js"></script>
    <script type="text/javascript" src="jslib/verify.js"></script>


</head>
<body>
ajax下進行用戶校驗的實例,請輸入用戶名:</br>
<!--ajax方式下不需要使用表單來進行數據提交,因此不用寫表單標簽
ajax方式下不需要name屬性,加個id屬性就行了-->
<input type="text" id="userName"/>
<input type="button" value="校驗" onclick="verify()"/>

<!--這個div用於存放服務器端返回的信息,開始為空
id屬性定義是為了利用dom的方式找到某一個節點,進行操作-->
<div id="result"></div>
<!--<div>456</div>
<span>123</span><span>456</span>-->
<!--div和span的直觀差異,div中的內容獨占一行,span中的內容不獨占-->
</body>
</html>
View Code

在頁面顯示

技術分享圖片

在點擊校驗按鈕前,先把js文件給引入進來,要不然點擊事件不會生效

目錄如下

技術分享圖片

當點擊校驗按鈕後,會跳轉到一個js文件,現命名為vertify.js。在這個文件裏主要幹四件事,比較重要。當然會涉及到js的一些內容。

1、獲取文本框中的內容,專業地說就是獲取節點,var jqueryObj=$("#userName").其中,Jquery的查找節點的方式是參數中#加上id屬性值可以找到一個節點,userName就是ajax.html中的id值,也就是在瀏覽器頁面中輸入的用戶名的數據。

2、獲取節點的數據,var dataName=jqueryObj.val();其中,jquery的方法返回節點的都是jquery的對象,可以繼續在上面執行其他的jquery的方法,val()方法就是返回節點數據。

3、將獲取到的數據發送到服務器端的servlet,$.get("AjaxServlet?name="+dataName,null,callback);其中,"AjaxServlet?name="+dataName 是把獲取到的數據與服務器端的數據連接起來,讓其相等,進行相關的業務判斷(不需要我們操作),null一欄其實是待發送的Key/Value的參數,callback是載入成功時的回調函數。

4、接收服務器端返回的數據,後面幾步需要在回調函數裏進行,因為通過回調函數可以將服務器端與頁面端有效聯通起來。function callback(){ };

  這裏先進行測試一下 技術分享圖片,我用的是firefox瀏覽器,firebug插件

  技術分享圖片技術分享圖片

  進一步測試

  技術分享圖片

說明我們寫的都是正確的

4是接收服務器段返回的數據,function callback( data){ alert(data)},進行測試

 技術分享圖片

測試可用

技術分享圖片

5、將服務器端返回的數據動態的顯示在頁面上,

var resultObj=$("#result");
resultObj.html(data);
alert(data);
其中result出現在ajax.html中,為的是在頁面中開辟一條空間存儲數據。
測試一下
技術分享圖片

通過
技術分享圖片

總結:

核心步驟:

1.獲取文本框中的內容

2.獲取節點中的數據
3.將節點中的數據發送給服務器端的servlet

//節點中的數據在服務器裏進行業務判斷(自動進行的)

4.接收服務器端返回的數據

5.將服務器端返回的數據動態的顯示在頁面上


註:因為firefox最新的版本已經不支持firebug插件,所以用的是低版本的,而且網上不好找,這是百度雲鏈接:https://pan.baidu.com/s/1mvf5MJ_FOXnuTb_elXk_gw
 

 

  

  

ajax的理解