引言
大家都知道可以通過post或者get獲得form表單的資料,那麼我們如何?不重新整理的提交直接獲得頁面上的資料呢?這就要藉助xmlhttp協議了。xmlhttp是xmldom技術的一部分。
下面的代碼就是一個很簡單的例子,我們利用xmlhttp技術實現簡單的使用者登陸。
開始
1.簡單的登入頁面login.jsp
<script> function toServer(){ var xml = "<root>"+ "<name>"+document.all('name').value+"</name>"+ "<pwd>"+document.all('pwd').value+"</pwd>"+ "</root>"; // var XMLSender = new ActiveXObject("Microsoft.XMLHTTP"); XMLSender.Open("POST",'do_login.jsp',false); XMLSender.send((xml)); alert(XMLSender.responseText); //可處理後台返回的結果 } </script> 姓名:<input type="text" id="name" /><br> 密碼:<input type="text" id="pwd" /><br> <input type="button" value="登入" onclick="toServer()"> |
2.背景登入處理頁面do_login.jsp
<% //讀取XMLHTTP流 java.io.BufferedReader br = request.getReader(); String str = ""; while (str != null) { str = br.readLine(); process (str); //可通過任何語言實現解析XML,進行業務處理 } //返回資訊 javax.servlet.ServletOutputStream sos = response.getOutputStream(); sos.print("login success"); sos.close(); %> |
3.結果如下:
總結
與傳統的“提交-回傳-重繪”式的web系統基本運行結構不同,我們可以通過通過XMLHTTP實現無重新整理的用戶端直接與伺服器互動,極大的提高使用者的感受度。
查考資料
XMLHTTP方法:
Open bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword
bstrMethod:資料傳送方式,即GET或POST。
bstrUrl:服務網頁的URL。
varAsync:是否同步執行。預設為True,即同步執行,但只能在DOM中實施同步執行。
應用中一般將其置為False,即非同步執行。
bstrUser:使用者名稱,可省略。
bstrPassword:使用者口令,可省略。
Send varBody
varBody:指令集。可以是XML格式資料,也可以是字串,流,或者一個不帶正負號的整數數組。也可以省略,讓指令通過Open方法的URL參數代入。
setRequestHeader bstrHeader, bstrValue
bstrHeader:HTTP 頭(header)
bstrValue:HTTP 頭(header)的值
如果Open方法定義為POST,可以定義表單方式上傳:
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
XMLHTTP屬性:
onreadystatechange:在同步執行方式下獲得返回結果的事件控制代碼。只能在DOM中調用。
responseBody:結果返回為不帶正負號的整數數組。
responseStream:結果返回為IStream流。
responseText :結果返回為字串。
responseXML:結果返回為XML格式資料。
關於作者