文章编号: 290591 - 最后修改: 2004年3月25日 - 修订: 1.2

如何通过使用 XMLHTTP 或 ServerXMLHTTP 对象提交窗体数据

展开全部 | 关闭全部

概要

有些情况下,可能需要将数据发送到端口或服务器,以便可以在页面或侦听应用程序中使用Request 对象中的Form 集合。为此,需要添加头来通知接收器:正文 (body) 包含可从Form 集合中访问的数据。

更多信息

发送的请求基于以下两部分:正文 包含有关正文 的信息,以便接收器知道其中包含的是什么数据。

头信息

需要设置的头信息是Content-Type。 在本例中,可将其设置为application/x-www-form-urlencoded

正文数据

正文 包含要发送的数据。数据采用的形式为名称=。对于多个值,可以使用“&”符号分隔每个名称/值对。例如:
input1=Hello&input2=World&idValue=12345
接收器能够通过分别使用名称“input1”、“input2”和“idValue”来挑选值“Hello”、“World”和“12345”。

ServerXMLHTTP 对象的分步说明

  1. 确保服务器上有 MSXML 3.0 或更高版本的解析程序,已经运行了代理配置实用程序,并且已经正确设置。有关更多信息,请参阅本文的“参考”部分。
  2. 将下列代码复制到名为ServerHTTP.asp 的新 Active Server Page (ASP) 页中。将该 ASP 页放到默认的主目录中。
    <%@ Language=vbScript%>
    <%
    	DataToSend = "id=1"
    	dim xmlhttp 
    	set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")
    	xmlhttp.Open "POST","http://localhost/Receiver.asp",false
    	xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    	xmlhttp.send DataToSend
    	Response.ContentType = "text/xml"
    	Response.Write xmlhttp.responsexml.xml
            Set xmlhttp = nothing
    %>
    备注:由于线程处理问题,两个 ASP 文件应位于不同的虚拟文件夹中。

    如果池设置为“Low”(低)或“Medium”(中)(这是 Microsoft Windows 2000 的默认设置),应在另一个虚拟文件夹中 POST 到 ASP。如果 ASP 在同一个虚拟文件夹中,ASP 将停止响应(挂起)。关闭浏览器后,该 ASP 和其他 ASP 将继续挂起,因为即使关闭浏览器,请求仍然在队列中。必须重新启动 IIS 或重新启动计算机。

    如果将池更改为“High”(高),可以再次对远程 ASP 运行这段代码,因为使用的是新线程。

  3. 将下列代码复制到名为Receiver.asp 的新 ASP 页中。将该 ASP 页放到默认的主目录中。
    <%@language=vbscript%>
    <%
    	value = Request.Form("id")
    	Response.ContentType = "text/xml"
    	response.write "<ReturnValue>" & value & "</ReturnValue>"
    %>
    					
    发布时,请务必使用服务器名而不是 Localhost,而且被 XMLHttp 打开的 URL 也应当包含同一服务器名。

  4. 确保“POST”指向正确的位置。
  5. 单击Submit(提交) XMLHTTP 按钮。
如果只是在客户端脚本中使用XMLHTTP 对象,必须遵守同样的头信息和数据格式。

XMLHTTP 对象的分步说明

  1. 将下列代码复制到名为ClientHTTP.asp 的新 ASP 页中。将该 ASP 页放到默认的主目录中。
    
    <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
    <!--
    
    function XMLHTTPButton_onclick() {
    	var DataToSend = "id=1";
    	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    	xmlhttp.Open("POST","http://<%=Request.ServerVariables("Server_Name")%>/Receiver.asp",false);
    	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xmlhttp.send(DataToSend);
    	alert(xmlhttp.responseXML.xml);
    }
    
    //-->
    </SCRIPT>
    
    <INPUT type="button" value="Submit XMLHTTP" id=XMLHTTPButton name=XMLHTTPButton 
    LANGUAGE=javascript onclick="return XMLHTTPButton_onclick()">
    					
  2. 从前面概述的ServerXMLHTTP 步骤的第 3 步中创建页面。
  3. 确保“POST”指向正确的位置。
  4. 在浏览器中加载ClientHTTP.asp

参考

有关其他信息,请单击下面的文章编号,查看 Microsoft 知识库文章:
289481? (http://support.microsoft.com/kb/289481/EN-US/ ) HOWTO:Proxy Configuration Utility Must Be Run for ServerXMLHTTP to Work(HOWTO:必须运行代理配置实用工具才能使 ServerXMLHTTP 工作)

这篇文章中的信息适用于:
  • Microsoft XML Parser 3.0
  • Microsoft XML Parser 3.0 Service Pack 1
  • Microsoft XML Core Services 4.0
关键字:?
kbhowto KB290591
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
 

文章翻译