文章目錄
- XMLHttpRequest有一些常用屬性:
- XMLHttpRequest的常用函數:
- 知識回顧:
一、AJAX簡介
AJAX的全稱是非同步JavaScript和XML;主要用途是對於整個頁面進行局部更新;
AJAX出現的目的是因為一般網頁如果稍作改動,就會重建整個頁面代碼,消耗大。而AJAX能夠只更新局部頁面;
AJAX是在JavaScript代碼中編寫的;
二、XMLHttpRequest
XMLHttpRequest是整個AJAX的核心,我們通過XMLHttpRequest進行發送和接受資料;
為了取得此對象,我們需要通過以下代碼:
<script language="Javascript">var xmlHttp;function create(){if(window.XMLHttpRequest){xmlHttp = new XMLHttpRequest();}else{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}}</script>
瀏覽器有兩種核心,IE核心和firefox核心;因此需要根據目前使用者瀏覽器進行判斷;
XMLHttpRequest有一些常用屬性:
(1)readyState :請求的狀態;(4 表示已經響應完畢)
(2)onreadystatechange :readyState改變時調用,通常用於回呼函數的傳回值;
(3)responseText :返回純文字對象;
(4)responseXML :返回XML資料的對象;
(5)status :返回當前HTTP的狀態(200為正常)
XMLHttpRequest的常用函數:
(1)open("GET/POST","url"); : 建立請求,指定是post還是get,並且指定發送的目的地URL;
(2)send(param); :發送請求,通常param=null;
知識回顧:
在JavaScript中
(1)document.getElementById("name").innerHTML可以設定此控制項的值;
(2)onblur事件表示失去焦點時調用;
登入非同步驗證代碼:
這裡使用DAO進行串連資料庫,因此這段代碼忽略;
<html><head><title>Title</title><script language="Javascript">var xmlHttp;var flag = false;function create(){if(window.XMLHttpRequest){xmlHttp = new XMLHttpRequest();}else{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}}function checkId(id){create();xmlHttp.open("GET","CheckServlet?id="+id);xmlHttp.send(null);flag = true;xmlHttp.onreadystatechange = callback;document.getElementById("msg").innerHTML = "正在驗證";}function callback(){if(xmlHttp.readyState==4){if(xmlHttp.status==200){var text = xmlHttp.responseText;if(text=="true"){document.getElementById("msg").innerHTML = "id正確";}else{document.getElementById("msg").innerHTML = "id重複";}}}}function ischecked(){return flag;}</script></head><body><form action="" method="post" onSubmit="return ischecked()">使用者ID:<input type="text" name="id" onBlur="checkId(this.value)"/><br />姓 名:<input type="text" name="name"/><br />密 碼:<input type="text" name="password"/><br /><input type="submit" value="註冊"/><span id="msg"></span></form></body></html>
注意:
(1)調用回呼函數不需要加括弧。
(2)readyState的拼字;
CheckServlet.java
package org.servlet;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import org.dao.factory.*;public class CheckServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{String id = req.getParameter("id");PrintWriter out = resp.getWriter();boolean flag=false;try{flag = DAOFactory.getInstance().findById(id);}catch(Exception e){}if(flag){out.print("true");}else{out.print("false");}} }
非同步驗證註冊的優點:
(1)能夠在沒有提交前就知道使用者名稱是否有效,現在使用的很多。