1. 程式人生 > 其它 >springmvc 學習(六) AJAX 的簡單使用,賬號密碼驗證例子

springmvc 學習(六) AJAX 的簡單使用,賬號密碼驗證例子

簡介

  • AJAX = Asynchronous JavaScript and XML(非同步的 JavaScript 和 XML)。
  • AJAX 是一種在無需重新載入整個網頁的情況下,能夠更新部分網頁的技術。
  • Ajax 不是一種新的程式語言,而是一種用於建立更好更快以及互動性更強的Web應用程式的技術。

利用AJAX可以做:

  • 註冊時,輸入使用者名稱自動檢測使用者是否已經存在。
  • 登陸時,提示使用者名稱密碼錯誤
  • 刪除資料行時,將行ID傳送到後臺,後臺在資料庫中刪除,資料庫刪除成功後,在頁面DOM中將資料行也刪除。
  • ....等等

這裡利用Ajax做一個登陸時提示使用者名稱賬號密碼是否正確的例子

這裡使用jquery提供的Ajax

jQuery Ajax本質就是 XMLHttpRequest,對他進行了封裝,方便呼叫!

下面是對應引數說明,這裡我們需要掌握的是url,type,data,success,datatype

jQuery.ajax(...)
      部分引數:
            url:請求地址
            type:請求方式,GET、POST(1.9.0之後用method)
        headers:請求頭
            data:要傳送的資料
    contentType:即將傳送資訊至伺服器的內容編碼型別(預設: "application/x-www-form-urlencoded; charset=UTF-8")
          async:是否非同步
        timeout:設定請求超時時間(毫秒)
      beforeSend:傳送請求前執行的函式(全域性)
        complete:完成之後執行的回撥函式(全域性)
        success:成功之後執行的回撥函式(全域性)
          error:失敗之後執行的回撥函式(全域性)
        accepts:通過請求頭髮送給伺服器,告訴伺服器當前客戶端可接受的資料型別
        dataType:將伺服器端返回的資料轉換成指定型別
          
"xml": 將伺服器端返回的內容轉換成xml格式 "text": 將伺服器端返回的內容轉換成普通文字格式 "html": 將伺服器端返回的內容轉換成普通文字格式,在插入DOM中時,如果包含JavaScript標籤,則會嘗試去執行。 "script": 嘗試將返回值當作JavaScript去執行,然後再將伺服器端返回的內容轉換成普通文字格式 "json": 將伺服器端返回的內容轉換成相應的JavaScript物件 "jsonp": JSONP 格式使用 JSONP 形式呼叫函式時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函式名,以執行回撥函式

首先對應的jsp頁面的程式碼如下:

首先匯入對應的jquery的包,這個可以在官網裡下載

編寫兩個輸入框,分別對應賬號密碼框

滑鼠離開後觸發函式 onblur="函式名" ,賬號密碼對應的函式分別是a(),b()

ajax 函式說明:

$.post()代表ajax,裡面寫上面對應的引數內容

url 請求的地址,data 請求時帶過去的引數,success 有個callback的返回引數,可以攜帶後端的返回資訊


<html>
<head>
  <title>$Title$</title>
  <script src="${pageContext.request.contextPath}/status/jquery-3.6.0.js"></script>
  <script>

    function a(){
      $.post({
        url:"${pageContext.request.contextPath}/userPwd",
        data: {"username":$("#user").val()},
        success:function (data){
          if(data.toString()==="賬號正確"){
            $("#msgUsername").css("color","green")
          }else {
            $("#msgUsername").css("color","red");
          }
          $("#msgUsername").html(data);
        }
      });
    }
    function b(){
      $.post({
        url:"${pageContext.request.contextPath}/userPwd",
        data: {"pwd":$("#pwd").val()},
        success:function (data){
          if(data.toString()==="密碼正確"){
            $("#msgPwd").css("color","green")
          }else {
            $("#msgPwd").css("color","red");
          }
          $("#msgPwd").html(data);
        }


      });
    }
  </script>


</head>
<body>

<form action="#" method="post">
  賬號 <input  type="text" id="user" onblur="a()" required/> <span id="msgUsername"></span> <br>
  密碼 <input  type="password" id="pwd" onblur="b()"required /> <span id="msgPwd"></span> <br>
</form>
</body>
</html>

後端對應程式碼如下:

"/userPwd"對應上面js的請求路徑url

username和pwd是前端請求的引數,這裡沒有使用資料庫獲取使用者資訊,直接使用admin和12346進行驗證,並且放回一個引數為msg的資料。

@RequestMapping("/userPwd")
    public String userPwd(String username ,String pwd){
        String msg=null;
        if(username!=null&&username!=""){
            if(username.equals("admin")){
                msg="賬號正確";
            }else {
                msg="賬號錯誤";
            }

        }
        if(pwd!=null&&pwd!=""){
            if(pwd.equals("123456")){
                msg="密碼正確";
            }else {
                msg="密碼錯誤";
            }

        }
        return msg;
    }

測試如下: