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的值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: xmlhttp.onreadystatechange是一个JavaScript事件处理程序,用于处理XMLHttpRequest对象的状态变化。当XMLHttpRequest对象的readyState属性发生变化时,该事件处理程序会被触发。在处理程序中,可以根据XMLHttpRequest对象的状态来执行相应的操作,例如发送请求、接收响应、处理响应数据等。 ### 回答2: XMLHttpRequest是一个浏览器对象,用于与服务器交换数据。onreadystatechange属性是XMLHttpRequest对象的一个事件处理程序,该事件会在XMLHttpRequest对象的readyState属性发生变化时被触发。XMLHttpRequest对象有5个不同的就绪状态,可以分别用数字0到4表示,如下: 0: 请求未初始化。XMLHttpRequest对象已创建,但尚未调用open()方法。 1: 服务器连接已建立。open()方法已经被调用,但send()方法尚未被调用。在这个状态下,可以通过setRequestHeader()方法来设置请求头部。 2: 请求已接收。send()方法已经被调用,服务器会接收请求,并返回响应。 3: 请求处理中。服务器正在处理请求,但尚未返回响应。 4: 请求已完成,且响应已就绪。响应已经接收,并可以获取响应数据。同时,XMLHttpRequest对象的各个属性和方法也已经可以使用了。 当readyState属性发生变化时,浏览器会调用回调函数,以检查响应是否已完成,并对返回的数据进行处理。通常,开发人员会为XMLHttpRequest对象设置一个指向响应处理函数的onreadystatechange属性。此时,回调函数会在XMLHttpRequest对象状态变化时被调用。 XMLHttpRequest对象的onreadystatechange属性通常会被设置为一个匿名函数,该函数会在XMLHttpRequest对象的就绪状态发生变化时被调用。在这个匿名函数中,开发人员可以对服务器发来的响应进行处理,并将处理结果用于更新浏览器中的页面内容。这种方式可以实现网页与服务器之间的动态交互,从而提高网页的动态性和实时性。 ### 回答3: XMLHttpRequest是一种在不重新加载整个网页的情况下从服务器获取数据的技术。XMLHttpRequest对象可以用于与服务器交换数据,它可以异步获取数据,也就是说不会影响页面的加载和显示。 XMLHttpRequest对象有一个属性onreadystatechange,当XMLHttpRequest对象的状态发生变化时,会触发onreadystatechange事件。通常使用该属性来监测XMLHttpRequest对象的状态变化,以及处理从服务器接收到的数据。 onreadystatechange事件有五个不同的状态: 0表示未初始化,尚未调用open()方法; 1表示已经调用open()方法,但尚未调用send()方法; 2表示已经调用send()方法,但尚未收到响应; 3表示正在接收响应数据; 4表示已经接收到全部响应数据,而且该响应已经可以使用。 当readyState的状态变化为4时,可以调用XMLHttpRequest对象的responseText属性来获取服务器返回的数据。在处理服务器返回数据时,需要注意设置Content-Type头信息,确保浏览器可以正确解析接收到的数据。同时,需要在onreadystatechange事件处理程序中处理错误情况,避免发生网络异常时造成的错误和程序崩溃。 总之,onreadystatechange是XMLHttpRequest对象的一个重要属性,用于监测并处理向服务器发送异步请求的过程中的状态变化和返回的数据。了解该属性的使用方法对于开发基于HTTP请求的Web应用程序非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VBDN

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值