AJAX實現對輸入用戶名的驗證


AJAX:

Asynchronous JavaScript And XML(異步的JavaScript和XML)。

需求:

同步編程出現的問題:比如在頁面輸入用戶名跟密碼的時候,如果密碼出現錯誤,頁面就會重新加載,然后重新輸入賬號密碼,很影響用戶體驗!

而AJAX是用來解決以上問題的。用戶鼠標離開用戶名的輸入框,頁面給出提示!

 

 

 實現:

AJAX編程四步:

1、創建AJAX核心對象XMLHttpRequest (瀏覽器內置的,可以直接使用)
2、注冊回調函數(重點)
3、開啟瀏覽器和服務器之間的通道
4、發送AJAX請求

XMLHttpRequest()對象:

XMLHttpRequest 是 AJAX 的基礎。
所有現代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用於在后台與服務器交換數據。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
創建 XMLHttpRequest 對象的語法:
  variable=new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對象:
  variable=new ActiveXObject("Microsoft.XMLHTTP");
為了應對所有的現代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支持 XMLHttpRequest 對象。
如果支持,則創建 XMLHttpRequest 對象。如果不支持,則創建 ActiveXObject : var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {//表示不支持IE5,IE6 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

index.html注冊頁面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    function checkUsername(username) {
        //AJAX發送請求全靠瀏覽器內置的這個對象: XMLHttpRequest對象 。
        //使用這個XMLHttpRequest對象可以在瀏覽器當中單獨啟動一個新的瀏覽器線程,通過瀏覽器線程發送該請求。
        //達到異步效果。
        //1、創建AJAX核心對象XMLHttpRequest (瀏覽器內置的,可以直接使用)
        var xhr = new XMLHttpRequest();
        //2、注冊回調函數
        /**
         * onreadystatechange存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數
         * readyState:
         存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
         •0: 請求未初始化
         •1: 服務器連接已建立
         •2: 請求已接收
         •3: 請求處理中
         •4: 請求已完成,且響應已就緒
         */
        xhr.onreadystatechange = function () {//xhr的readyState發生改變的時候,回調一次
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    var nameSpan = document.getElementById("nameSpan");
                    nameSpan.innerHTML = xhr.responseText;

                } else {
                    alert(xhr.status+"錯誤");
                }
            }
        }
        //3、開啟瀏覽器和服務器之間的通道
        /**
         * open(method,url,async)
         規定請求的類型、URL 以及是否異步處理請求。
         •method:請求的類型;GET 或 POST
         •url:文件在服務器上的位置,相當於超鏈接<a href=""></a>
         •async:true(異步)或 false(同步)
         */
        xhr.open("GET", "some?username="+username, true);
        //4、發送AJAX請求
        xhr.send();
    }

</script>
用戶名<input type="text" name="username" onblur="checkUsername(this.value)"/><span id="nameSpan" style="font-size: 12px"></span><br>
密碼<input type="password" name="password"><br>
</body>
</html>

 

web.xml配置文件:

    <servlet>
        <servlet-name>someServlet</servlet-name>
        <servlet-class>com.zhixi.zhang.SomeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>someServlet</servlet-name>
        <url-pattern>/some</url-pattern>
    </servlet-mapping>

 

SomeServlet.java進行判斷:

package com.zhixi.zhang;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String username = request.getParameter("username");
        if ("admin".equals(username)){
            response.getWriter().print("<font color='red'> 用戶名已被注冊</font>");
        }else {
            response.getWriter().print("<font color='green'>用戶名未被注冊</font>");
        }
    }
}

以上就完成了簡單的用戶進行注冊的簡單檢查功能!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM