2011-10-04 63 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等