天天看點

XMLHttpRequest Object

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對象來擷取資料并替換目前頁面的類似的資料内容,進而減少每次響應得資料流量,提高用戶端的通路速度。