XMLHTTP---介绍

  XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。来自MSDN的解释:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。 
  现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

比如在IE中,我们通常这样使用:

示例1

 function UserVerify(account,psw,vertifycode){
    var xml = null;
    var XMLSender = new ActiveXObject("Microsoft.XMLHTTP");
    var url = "<%=request.getContextPath()%>/baseserver?CHANNEL_ID=" + channel_id + "&EventID=1&LOGIN_USRNAME="+account+"&LOGIN_PSWD="+psw+"&LOGIN_VERFYCODE="+vertifycode;
    XMLSender.Open("POST",url,false);
    XMLSender.setRequestHeader("Content-Type","text/xml; charset=UTF-8");
    XMLSender.send(xml);
    return XMLSender.responseText;
  }

 XMLSender.Open:

//第一个参数的意思是,用"POST"方式发送数据.可以大到4MB,也可以换为"GET".只能256KB
//第2个参数的意思是数据发送到哪个文件处理
//第3个参数意思是同步或异步方式.TRUE为异步,FALSE为同步

XMLHTTP对象的属性和方法列表(来自IXMLHTTPRequest接口):

   
Name Type Description
onreadystatechange N/A指定当就绪状态发生改变时调用的事件处理函数,仅用于异步操作 
readyState Long异步操作的状态:未初始化(0),正在加载(1),已加载(2),交互(3),已完成(4)
responseBody Variant将响应信息正文作为unsigned byte数组返回
responseStream Variant将响应信息正文作为一个ADO Stream对象返回
responseText String将响应信息正文作为一个文本字符串返回
responseXML Object通过XMLDom将响应信息正文解析为XMLDocument对象
status Long服务器返回的HTTP状态码
statusText String服务器HTTP响应行状态
   
Name Desciption
abort取消当前 HTTP 请求
getAllResponseHeaders从响应信息中检索所有的标头字段
getResponseHeader从响应信息正文中获得一个 HTTP 标头值
open(method, url, boolAsync, bstrUser, bstrPassword)打开一个与 HTTP 服务器的连接
send(varBody)设定一个请求的标头字段
setRequestHeader(bstrHeader, bstrValue)向 HTTP 服务器发送请求。可包含正文。


    这里面显然就open方法比较麻烦,带了一大堆参数,它们的含义分别是:

   
Parameter Description
methodHTTP的通信方式,比如GET, HEAD, POST, PUT, DELETE, CONNECT等
url接收数据的服务器的URL地址,URL可带QueryString
boolAsync一个布尔标识,说明请求是否为异步的。如果是异步通信方式,客户端就不等待服务器的响应;如果是同步方式,客户机会等到服务器返回消息后才去执行其它操作
bstrUser用户ID,用于服务器身份验证
bstrPassword用户密码,用于服务器身份验证

它最主要的是提供了两种执行模式:同步模式和异步模式。同步模式可以比较精确的控制程序流程,可是如果服务器的Response太慢,browser会有死掉失去相应的问题;而使用异步模式由于是事件触发方式控制流程,会给程序运行带来一些不可与预计的问题,因为你不知道客户端等待服务器Response的过程中,用户会在browser里做什么操作。

上面的示例1为同步方式获取服务器数据;

异步通讯的示例:
None.gifxmlhttp.open("GET""default.aspx"true);
None.gifxmlhttp.onreadystatechange 
= function()
None.gif{
None.gif    
if ( xmlhttp.readyState==4 )
None.gif    {
None.gif        alert(xmlhttp.responseText);
None.gif    }
None.gif}
None.gifxmlhttp.send(
null);

//检查是否发生获取数据时错误

if(Dom.parseError.errorCode != 0) {
delete(Http)
delete(Dom)
return(false)
}
else
{
var Back = Dom.documentElement.childNodes.item(0).text 

 

转载于:https://www.cnblogs.com/shipengzhi/articles/2035066.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值