天天看點

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

更新時間:2010年08月04日 13:05:02   作者:

幾年很流行 Ajax,而 Ajax 的本質就是 XMLHttpRequest,是用戶端 XMLHttpRequest 對象的使用。

相對于 Ajax,服務端 XMLHTTP 就是在服務端使用 XMLHttpRequest 對象了。雖然說,在服務端使用異步請求是比較不友善的,但是做為可以服務端發送 HTTP 請求的元件,學習一下也是沒有壞處的。

這裡,我講的是在 ASP 環境中使用服務端 XMLHttpRequest,并以 JScript 做為示範代碼的語言,是以,你需要了解 ASP 以及 JScript。

服務端 XMLHTTP,通常會用在擷取遠端主機的網頁或者其他内容,新聞聚合系統一般就是使用服務端 XMLHTTP 對象來擷取要聚合的 Feed 的内容,然後使用 XMLDOM 對象來分析 Feed 的内容,取出新聞的标題、作者、内容等資訊,再存在資料庫中,然後将若幹個資料源的新聞一起顯示在一起。抓蝦就是這樣一個新聞聚合器,但是它不是用 ASP 寫的就是了 :)

在 ASP 中,我們可以用以下代碼來建立一個 ServerXMLHTTP 對象,而這個對象,就是我們在服務端進行一切操作的基礎。

var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.5.0");

首先來了解一下 ServerXMLHTTP 對象有哪些比較有用的方法:

1. abort 這個方法用于取消 XMLHTTP 的請求。如果 XMLHTTP 對象以異步方式發送請求,如果到達一定的時間請求仍然沒有傳回,就可以使用這個方法來取消請求。

2. getAllResponseHeaders 這個方法的傳回值是一個字元串,相當于 HTTP 請求的頭部去掉了請求方法、URI和協定版本資訊。

3. getResponseHeader 這個方法用來擷取指定頭部資訊,比較有用的就是可以用來擷取傳回資料的 Content-Type、Referer 等。

4. open 使用指定的請求方法、URI和同步方式以及認證資訊等初始化一個請求。

5. send 發送 HTTP 請求,等待接收響應資料,注意,如果是以同步方式發送請求,send方法調用後不會立即傳回,而是等到請求完成後才會傳回,而以異步方法請求時,則會立即傳回。另外,send方法帶有一個可選參數body,表示要發送的資料,這在使用 POST 方法時比較有用。

6. setTimeout 設定 ServerXMLHTTP 對象的 4 個逾時時間,分别是:域名解析、連接配接伺服器、發送資料、接收響應。可以通過設定相應的逾時時間來控制 ServerXMLHTTP 對象,以免 ServerXMLHTTP 不能及時傳回而造成程式停止響應。

7. setRequestHeader 設定請求的 Header,在用戶端 XMLHttpRequest中,通常用來設定請求的資料類型,或者辨別請求的方法等等,例如 jquery 會增加頭部辨別 X-Request-With,表示請求是從 XMLHttpRequest 對象發出,以友善服務端做出相應的動作。

8. waitForResponse 在使用異步方式發送請求時,可以用這個方法來控制請求的程序。在服務端腳本中,不可以像用戶端那樣直接使用回調函數來控制異步請求,也沒有相應的函數來使用程式休眠一定的時間,是以,為了等待請求傳回,我們可以使用這個方法來等待一定時間。

另外,還有其他一些方法,如 getOption、setOption、setProxy 等,這些方法用得比較少,是以這裡不再介紹,需要了解的朋友可以查閱 MSDN。

接下來,再看看 ServerXMLHTTP 對象的屬性:

1. onreadystatechange XMLHTTP 對象狀态改變時的回調函數,這個屬性為異步操作奠定了一個基礎,可以讓程式在不用查詢 XMLHTTP 對象狀态的情況獲知 XMLHTTP 操作是否已經完成。

2. readyState XMLHTTP 對象狀态,有 5 個值,從 0 到 4,分别代表的意思是:

0 - 未初始化,剛使用 new ActiveXObject("MSXML.ServerXMLHTTP.5.0") 建立時對象所處的狀态

1 - 載入中,這個時候,已經調用了 open 方法,但是還沒有使用 send 方法發送資料

2 - 已經載入,已經調用了 send 方法發送資料,但是還沒有可用的響應流

3 - 正在互動,正在接收資料,這個時候可以使用 responseBody 和 responseText 屬性來擷取已經得到的部分資料了

4 - 完成請求,全部資料已經接收完成

通常情況下,我們隻需要判斷一下狀态 4 即可,這個時候資料已經全部載入,使用 responseBody 或 responseText 屬性就能擷取需要的資料。

3. status HTTP 響應狀态碼,正常情況應該為 200,如果請求的資源不存在,就會傳回 404,還有其他狀态碼如伺服器錯誤 500 等。

4. statusText HTTP 響應狀态文本,用于描述響應狀态碼所代表的意思,諸如 200 OK 中的 OK,404 Not Found 中的 Not Found

5. responseBody 響應資料的位元組數組,這在 VBScript 裡是可以直接使用的,但是在 JScript 裡就需要轉換過了。

6. responseText 以文本方式擷取響應資料

7. responseXML 将響應資料作為一個 XMLDOM 對象來傳回,這在請求的資料是一個 XML 文檔時特别有用

8. responseStream 響應流對象,這個屬性不常用

相關文章

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

asp在伺服器把 XML 轉換為 XHTML的實作代碼,需要的朋友可以參考下。2011-11-11

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

Jmail發郵件的例子...2006-09-09

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

再發幾個ASP不錯的函數...2007-08-08

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

ASP javascript: Application對象的Contents和StaticObjects做Cache的一些結論。

ASP封裝Cache對象,一般都是基于Application的,2008-05-05

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

主要用來去除html中的script,iframe等html标記,需要的朋友可以參考下。2011-01-01

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

很多朋友想在最新新聞顯示new圖檔,以便訪客快速找到新更新的内容,原理就是通過判斷日期2012-03-03

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

解決ASP(圖像)上傳漏洞的方法...2006-11-11

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

有時候大家享用base64 加解密,下面是具體的實作代碼,需要的朋友可以參考下。2009-06-06

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

這篇文章主要介紹了ASP擷取資料庫表名、庫名、字段名的方法,本文例子使用的是SqlServer資料庫,需要的朋友可以參考下2014-07-07

asp ajax xmlhttp,伺服器XMLHTTP(Server XMLHTTP in ASP)基礎知識

這篇文章主要介紹了ASP内建對象Server的相關資料,需要的朋友可以參考下2015-10-10

最新評論