xmlhttprequest object
作者:kongxx
什麼是xmlhttprequest對象
一個頁面可以通過一個httprequest發送一個請求來擷取伺服器響應,而目前頁面不做重新整理。
通過使用xmlhttprequest對象,開發者可以在不重新整理目前頁面的情況下更新目前頁面的資料。
注:xmlhttprequest對象不是w3c标準,不過目前已有以下浏覽器支援此對象操作:ie5.0+,safari1.2,mozilla1.0,firefox,netscape7。
建立一個xmlhttprequest對象
要建立xmlhttprequest對象,可以采用以下方法:
對于ie:
var xmlhttp=new activexobject("microsoft.xmlhttp")
對于for mozilla, firefox, safari, and netscape:
var xmlhttp=new xmlhttprequest()
xmlhttprequest對象引用
方法
描述
abort
取消目前請求
getallresponseheaders()
擷取完整的http header資訊
getresponseheader(headername)
擷取指定的http header資訊
open(method,url,async,user,passwd)
打開一個請求。
method-指定請求方法get或post
url-請求的url
async-指定異步請求響應。true表示發送請求後不等待回應而去執行别的操作;false表示請求後等待回應後才去繼續别的操作。
user-通路使用者(可選)
passwd-通路密碼(可選)
send(content)
發送請求
setrequestheader("label","value")
設定請求頭部資訊
屬性名
onreadystatechange
一個事件,用來捕獲所有的狀态變換
readystate
傳回對象狀态:
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
responsetext
響應文本
responsexml
響應xml資料
status
傳回狀态數字(如:”404”
>表示“not found” “200”表示“ok”)。
statustext
傳回狀态文本(如:“not found” ,“ok”)
一個小例子
test1.jsp建立一個xmlhttprequest對象,并從伺服器擷取伺服器時間填充到目前頁面指定的div中,代碼如下:
<%@ page contenttype="text/html;charset=gb2312" language="java" errorpage=""%>
<html>
<head>
<script language="javascript">
var xmlhttp ;
var url = "test2.jsp";
if (window.xmlhttprequest) {
xmlhttp=new xmlhttprequest();
} else if (window.activexobject) {
xmlhttp=new activexobject("microsoft.xmlhttp");
}
function func_test() {
if (xmlhttp) {
xmlhttp.open("get", url,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readystate==4) {
document.getelementbyid('testdiv').innerhtml=xmlhttp.responsetext;
}
}
}
xmlhttp.send(null);
}
</script>
</head>
<body bgcolor="#ffffff" >
<input type="button" value="button" onclick="func_test()">
<div id="testdiv">
</div>
</body>
</html>
test2.jsp接收請求輸入目前系統時間,代碼如下:
<%@ page import="java.util.*"%>
<%
out.println(calendar.getinstance().gettime());
%>
将此兩個檔案放入tomcat中,通路test1.jsp頁面,點選button,即可顯示伺服器時間。
由此看出,在一些開發中我們可以使用xmlhttprequest對象來處理兩次請求頁面表現形式相似的情況,通過xmlhttprequest對象來擷取資料并替換目前頁面的類似的資料内容,進而減少每次響應得資料流量,提高用戶端的通路速度。