2011-10-04 148 views
1

我在經典ASP和XHR上發現的大多數問題都是關於如何使用經典ASP創建和發送XMLHttpRequest。在我的情況下,我想用傳統的ASP讀取XHR中發送的數據。在經典ASP中訪問XMLHttpRequest數據

我完全不熟悉傳統的ASP;我在VBScript中編寫(儘可能少的代碼)。我已經發送了一個XHR到服務器,使用POST作爲方法,在javascript中使用request.send(data)。

我現在如何訪問服務器上的數據。我猜它存儲在Request-object的某個地方,但我找不到它或使它工作。數據是否存儲在Request.ServerVariables中?或者我需要使用BinaryRead方法?

編輯:根據AnthonyWJones的評論,我沒有指定數據格式。但我想我希望能夠發送純文本,JSON或x-www-form-urlencoded數據。

回答

3

如果您指出了實際發送的數據類型,它會有所幫助。我假設你正在發佈一些XML。在這種情況下,您可以使用MSXML DOMDocument加載方法。

Dim xml: Set xml = CreateObject("MSXML2.DOMDocument.3.0") 
    xml.async = False 
    xml.SetProperty "SelectionLanguage", "XPath" 
    xml.Load Request 

注ASP請求對象的通過直接向Load方法。由於ASP Request對象沒有很好的文檔實現標準的COM IStream接口,因此任何可以從IStream(如DOMDocument`)讀取其數據的任何東西都可以通過ASP Request對象。

+0

哇。 12年的ASP和我從來不知道請求實現IStream :) –

+0

感謝您的答案!如果我發送不同類型的數據,我想我會創建一個不同的對象?像CreateObject(some_JSON_specification)?我在哪裏可以找到CreateObject()函數的不同參數? – Mansiemans

2

除了公認的答案,這是完全正確的,你還可以設置:

xml.validateOnParse = true 

或FALSE,根據自己的喜好。

至於:

「我在哪裏可以找到不同的參數來的CreateObject()函數?」

有很多不同的對象,你可以創建。這取決於你的服務器上安裝了什麼。就像你可能沒有.3.0 dom文檔一樣。 Devguru有一些內置對象的列表,如文件系統,字典等:http://www.devguru.com/technologies/vbscript/13990.asp

其他常見的有CDONTS.Mail郵件,strCat.Catter,ADODB.Recordset /命令,MSxml2.ServerXMLHttp,WScript.Shell,各種加密對象,各種第三方實用工具,比如從SoftArtisans或IPWorks等