ajax實現(xiàn)簡單實時驗證功能
什么是ajax
Ajax 即“Asynchronous Javascript And XML”(異步 JavaScript 和 XML),是指一種創(chuàng)建交互式網(wǎng)頁應用的網(wǎng)頁開發(fā)技術。
Ajax = 異步 JavaScript 和 XML(標準通用標記語言的子集)。
Ajax 是一種用于創(chuàng)建快速動態(tài)網(wǎng)頁的技術。
Ajax 是一種在無需重新加載整個網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術。
通過在后臺與服務器進行少量數(shù)據(jù)交換,Ajax 可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新。
傳統(tǒng)的網(wǎng)頁(不使用 Ajax)如果需要更新內容,必須重載整個網(wǎng)頁頁面。
這是百度對它的定義,足夠詳細。
值得補充的一點是對異步的理解,異步是相對于同步來說的,在這里他們指的是服務器和瀏覽器的交互模式。
同步,每次請求發(fā)出之后,用戶操作即被阻塞,必須要求返回響應后繼續(xù)操作。而異步指的是發(fā)出請求后,用戶無需等待響應,一切由ajax來實現(xiàn),無需進行刷新網(wǎng)頁就可以局部更新數(shù)據(jù)。提高了倆端的溝通效率。
來個小demo
做一個無刷新驗證表單的demo,在對話框中輸入用戶名,在后臺進行驗證,使用ajax技術。
項目結構,使用maven構建
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>login</title> </head> <body>
歡迎登陸:
用戶名:<input type="text" name="username" id="username" onchange="CallServer()"/> <!-- 顯示提示信息 --> <div id="msg"></div> <!-- 在jsp頁面中引入js,絕對路徑的方式 --> <script src="${pageContext.request.contextPath}/js/main.js"></script> </body> </html>
main.js
alert("use ajax!") //創(chuàng)建XMLHttpRequest對象,在不同瀏覽器 function createXMLHTTP() { if(window.XMLHttpRequest){ // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執(zhí)行代碼 xmlhttp = new XMLHttpRequest(); }else { // IE6, IE5 瀏覽器執(zhí)行代碼 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlhttp; } function CallServer() { var username = document.getElementById("username").value; // 判斷為空 if ((username == null) || (username == "")) return; var xmlhttp = createXMLHTTP(); // 構建請求url var url = "/loginServlet"+"?"+"username="+username; //狀態(tài)碼改變調用事件 xmlhttp.onreadystatechange = function () { //正常返回,替換msg內容 if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ document.getElementById("msg").innerHTML = xmlhttp.responseText; } } //異步提交請求 xmlhttp.open("GET",url,true); //發(fā)送請求 xmlhttp.send(); }
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>loginServlet</servlet-name> <servlet-class>com.lbw.servlet.loginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/loginServlet</url-pattern> </servlet-mapping> </web-app>
loginServlet.java
package com.lbw.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; /** * 后端使用Servlet處理請求 */ public class loginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設置編碼和響應頭 request.setCharacterEncoding("UTF-8"); response.setContentType("text/xml;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); //獲取參數(shù) String username = request.getParameter("username"); String msg = ""; if("lbw".equals(username)){ msg = "名稱正確"; }else { msg = "名稱錯誤"; } PrintWriter out = response.getWriter(); out.println(msg); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }
開始測試
輸入localhost:8888/login.jsp,彈出窗口
代表在jsp中引入js成功
在輸入框輸入測試數(shù)據(jù)
由Servlet中邏輯決定,返回錯誤信息
由Servlet中邏輯決定,返回成功信息
由此,初步實現(xiàn)了ajax異步請求,達到了實時驗證的要求
一些小細節(jié)
1.在使用maven構建項目,注意Project Structure -> Facets
,這里設置web.xml和webapp的路徑,idea會使用到
2.在引入js時,注意使用相對路徑的方式來進行映入,并且用到EL表達式要開啟isELIgnored="false"·`避免沒有解析。
總結
以上所述是小編給大家介紹的ajax實現(xiàn)簡單實時驗證功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
相關文章
IIS7中Ajax.AjaxMethod無效的原因及解決方法
使用Ajax.AjaxMethod方法在asp.net的服務器下一切正常,用iis的時候,js中總是cs類找不到,具體的解決方法如下,遇到類似情況的朋友可以參考下2013-07-07FormData+Ajax實現(xiàn)上傳進度監(jiān)控
FormData類型其實是在XMLHttpRequest 2級定義的,它是為序列化表以及創(chuàng)建與表單格式相同的數(shù)據(jù)(當然是用于XHR傳輸)提供便利。接下來通過本文給大家分享FormData+Ajax實現(xiàn)上傳進度監(jiān)控,需要的朋友一起看看吧2017-11-11django使用ajax post數(shù)據(jù)出現(xiàn)403錯誤如何解決
在django中,使用jquery ajax post數(shù)據(jù),會出現(xiàn)403的錯誤,該如何解決呢?下面由腳本之家小編幫大家解決django使用ajax post數(shù)據(jù)出現(xiàn)403錯誤,需要的朋友可以參考下2015-09-09ASP小偷程序如何利用XMLHTTP實現(xiàn)表單的提交
ASP小偷程序如何利用XMLHTTP實現(xiàn)表單的提交...2006-07-07用ajax xml的數(shù)據(jù)讀取的HelloWorld程序
我們經(jīng)常會使用JavaScript實現(xiàn)動態(tài)的改變div里面的內容,尤其是使用ajax的時候,尤為重要。2009-04-04