XMLHTTP物件及其方法--------------------
MSXML中提供了Microsoft.XMLHTTP對象,能夠完成從封包到Request對象的轉換以及發送任務。
建立XMLHTTP物件的語句如下:
Set objXML = CreateObject("Msxml2.XMLHTTP") 或
Set objXML = CreateObject(“Microsoft.XMLHTTP”)
' Or, for version 3.0 of XMLHTTP, use:
' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
物件建立後呼叫Open方法對Request物件進行初始化,語法格式為:
poster.open http-method, url, async, userID, password
Open方法中包含了5個參數,前三個是必要的,後兩個是可選的(在伺服器需要進行身份驗證時提供)。參數的意義如下所示:
http-method: HTTP的通訊方式,例如GET或是POST
url: 接收XML資料的伺服器的URL位址。通常在URL中要指明ASP或CGI程序
async: 一個布林標識,說明請求是否為非同步的。如果是非同步通訊方式(true),客戶機就不等待伺服器的回應;如果是同步方式(false),客戶機就要等到伺服器回傳訊息後才去執行其他操作
userID 使用者ID,用於伺服器驗證
password 使用者密碼,用於伺服器驗證
XMLHTTP物件的Send方法以Open方法對Request物件進行初始化後,呼叫Send方法傳送XML資料:
poster.send XML-data
Send方法的參數類型是Variant,可以是字串、DOM樹或任意資料流。發送資料的方式分為同步和非同步兩種。在非同步方式下,資料包一旦發送完畢,就結束Send進程,客戶機執行其他的操作;而在同步方式下,客戶機要等到伺服器回傳確認訊息後才結束Send進程。
XMLHTTP物件中的readyState屬性能夠反映出伺服器在處理請求時的進展狀況。客戶機的程式可以根據這個狀態資訊設定對應的事件處理方法。屬性值及其意義如下表所示:
值說明
0 Response物件已經創建,但XML文件上載過程尚未結束
1 XML文檔已經載入完畢
2 XML文檔已經載入完畢,正在處理中
3 部分XML文件已經解析
4 文件已經解析完畢,客戶端可以接受回傳訊息用戶機處理回應訊息用戶端接收到回傳訊息後,進行簡單的處理,基本上就完成了C/S之間的一個互動週期。客戶機接收回應是透過XMLHTTP物件的屬性實現的:
●responseTxt:將返回訊息作為文字字串;
●responseXML:將返回訊息視為 XML文檔,在伺服器回應訊息中含有XML資料時使用;
●responseStream:將回傳訊息視為Stream物件。
下面的xml檔案是動態產生的最後用xmlHTTP傳送出去,這是一個在客戶端JavaScript腳本裡的內容,當然你也可以寫在伺服器,但是要相應的改一些東西:(僅供大家參考,了解它的用法)
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("數量")
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("單價")
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("倉庫程式碼")
newNode.text=CK;
xmlDoc.documentElement.appendChild(newNode)
newNode =xmlDoc.createElement("票號")
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);
我的每一個newNode的text值就是一個變量,也就是我客戶端form 中input的值,