XMLHTTP對(duì)象及其方法
------------------
MSXML中提供了Microsoft.XMLHTTP對(duì)象,能夠完成從數(shù)據(jù)包到Request對(duì)象的轉(zhuǎn)換以及發(fā)送任務(wù)。
創(chuàng)建XMLHTTP對(duì)象的語(yǔ)句如下:
Set objXML = CreateObject("Msxml2.XMLHTTP") 或
Set objXML = CreateObject(“Microsoft.XMLHTTP”)
' Or, for version 3.0 of XMLHTTP, use:
' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
對(duì)象創(chuàng)建后調(diào)用Open方法對(duì)Request對(duì)象進(jìn)行初始化,語(yǔ)法格式為:
poster.open http-method, url, async, userID, password
Open方法中包含了5個(gè)參數(shù),前三個(gè)是必要的,后兩個(gè)是可選的(在服務(wù)器需要進(jìn)行身份驗(yàn)證時(shí)提供)。參數(shù)的含義如下所示:
http-method: HTTP的通信方式,比如GET或是 POST
url: 接收XML數(shù)據(jù)的服務(wù)器的URL地址。通常在URL中要指明 ASP或CGI程序
async: 一個(gè)布爾標(biāo)識(shí),說(shuō)明請(qǐng)求是否為異步的。如果是異步通信方式(true),客戶(hù)機(jī)就不等待服務(wù)器的響應(yīng);如果是同步方式(false),客戶(hù)機(jī)就要等到服務(wù)器返回消息后才去執(zhí)行其他操作
userID 用戶(hù)ID,用于服務(wù)器身份驗(yàn)證
password 用戶(hù)密碼,用于服務(wù)器身份驗(yàn)證
XMLHTTP對(duì)象的Send方法
用Open方法對(duì)Request對(duì)象進(jìn)行初始化后,調(diào)用Send方法發(fā)送XML數(shù)據(jù):
poster.send XML-data
Send方法的參數(shù)類(lèi)型是Variant,可以是字符串、DOM樹(shù)或任意數(shù)據(jù)流。發(fā)送數(shù)據(jù)的方式分為同步和異步兩種。在異步方式下,數(shù)據(jù)包一旦發(fā)送完畢,就結(jié)束Send進(jìn)程,客戶(hù)機(jī)執(zhí)行其他的操作;而在同步方式下,客戶(hù)機(jī)要等到服務(wù)器返回確認(rèn)消息后才結(jié)束Send進(jìn)程。
XMLHTTP對(duì)象中的readyState屬性能夠反映出服務(wù)器在處理請(qǐng)求時(shí)的進(jìn)展?fàn)顩r??蛻?hù)機(jī)的程序可以根據(jù)這個(gè)狀態(tài)信息設(shè)置相應(yīng)的事件處理方法。屬性值及其含義如下表所示:
值 說(shuō)明
0 Response對(duì)象已經(jīng)創(chuàng)建,但XML文檔上載過(guò)程尚未結(jié)束
1 XML文檔已經(jīng)裝載完畢
2 XML文檔已經(jīng)裝載完畢,正在處理中
3 部分XML文檔已經(jīng)解析
4 文檔已經(jīng)解析完畢,客戶(hù)端可以接受返回消息
客戶(hù)機(jī)處理響應(yīng)信息
客戶(hù)機(jī)接收到返回消息后,進(jìn)行簡(jiǎn)單的處理,基本上就完成了C/S之間的一個(gè)交互周期??蛻?hù)機(jī)接收響應(yīng)是通過(guò)XMLHTTP對(duì)象的屬性實(shí)現(xiàn)的:
● responseTxt:將返回消息作為文本字符串;
● responseXML:將返回消息視為XML文檔,在服務(wù)器響應(yīng)消息中含有XML數(shù)據(jù)時(shí)使用;
● responseStream:將返回消息視為Stream對(duì)象。
下面的xml文件是動(dòng)態(tài)生成的最后用xmlHTTP傳送出去,這是一個(gè)在客戶(hù)端JavaScript腳本里的內(nèi)容,當(dāng)然你也可以寫(xiě)在服務(wù)器,但是要相應(yīng)的改一些東西:(僅供大家參考,了解它的用法)
var xmlDoc=new ActiveXObject("MSXML2.DOMDocument");
flag=xmlDoc.loadXML("");
newNode =xmlDoc.createElement("編碼")
MarkNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartMark")
newNode.text=StartMark;
MarkNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndMark")
newNode.text=EndMark;
MarkNode.appendChild(newNode)
newNode =xmlDoc.createElement("日期")
DateNode=xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartDate");
newNode.text=StartDate;
DateNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndDate")
newNode.text=EndDate;
DateNode.appendChild(newNode);
newNode =xmlDoc.createElement("數(shù)量")
SLNode =xmlDoc.documentElement.appendChild(newNode);
newNode =xmlDoc.createElement("StartSL")
newNode.text=StartShuL
SLNode.appendChild(newNode)
newNode =xmlDoc.createElement("EndSL");
newNode.text=EndShuL
SLNode.appendChild(newNode);
newNode =xmlDoc.createElement("單價(jià)")
DJNode =xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("StartDJ")
newNode.text=StartDanJ;
DJNode.appendChild(newNode);
newNode =xmlDoc.createElement("EndDJ")
newNode.text=EndDanJ;
DJNode.appendChild(newNode);
newNode =xmlDoc.createElement("金額")
JENode =xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("StartJE")
newNode.text=StartJinE
JENode.appendChild(newNode)
newNode =xmlDoc.createElement("EndJE")
newNode.text=EndJinE
JENode.appendChild(newNode)
newNode =xmlDoc.createElement("倉(cāng)庫(kù)代碼")
newNode.text=CK;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("票號(hào)")
newNode.text=RKPH;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("單位代碼")
newNode.text=CorpName;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("BiaoShi")
newNode.text=Biaoshi
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("FindCate")
newNode.text=FindCate
xmlDoc.documentElement.appendChild(newNode)
var xh =new ActiveXObject("MSXML2.XMLHTTP")
xh.open("POST","Find.asp",false)
xh.setRequestHeader("Content-Type","text/xml")
xh.setRequestHeader("Content-Type","gb2312")
xh.send(xmlDoc);
我的每一個(gè)newNode的text值是一個(gè)變量,也就是我客戶(hù)端form 中input的值,