xmlHttp
来源:互联网 发布:mac代理设置 编辑:程序博客网 时间:2024/06/05 00:39
Xmlhttp是一种浏览器对象, 可用于模拟http的GET和POST请求。配合JavaScript可以实现页面数据在无刷新下的定时数据更新,如果应用在聊天室、文字直播上可以取得较好的视觉效果。
xmlhttp并不是IE特有的东西,虽然目前还不是W3C的标准,不过IE, Netscape/Mozilla, 和Safari都支持。在IE中我们使用new ActiveXObject('MSXML2.XMLHTTP')或者new ActiveXObject("Microsoft.XMLHTTP")来获得的xmlhttp对象实例,使用前者还是后者和客户端机器安装的MSXML版本有关。在Netscape/Mozilla和Safari中,使用new XMLHttpRequest()来获得xmlhttp对象实例。比如在IE中,我们通常这样使用:
var xmlhttp = null;
try
{
xmlhttp=new ActiveXObject("MSXML2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2){}
}
它一共就6个方法8个属性。不过它最主要的是提供了两种执行模式:同步模式和异步模式。同步模式可以比较精确的控制程序流程,可是如果服务器的Response太慢,browser会有死掉失去相应的问题;而使用异步模式由于是事件触发方式控制流程,会给程序运行带来一些不可与预计的问题,因为你不知道客户端等待服务器Response的过程中,用户会在browser里做什么操作。
下面是一个同步方式获取服务器数据的简单示例:
function GetRemoteData(url)
{
var xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
try
{
xmlhttp.open('GET', url,false);
if ( xmlhttp.status==200 )
{
return xmlhttp.responseText;
}
throw '';
}
catch(e)
{
return '';
}
}
XMLHTTP对象的属性和方法列表(来自IXMLHTTPRequest接口):
NameTypeDescriptiononreadystatechangeN/A指定当就绪状态发生改变时调用的事件处理函数,仅用于异步操作 readyStateLong异步操作的状态:未初始化(0),正在加载(1),已加载(2),交互(3),已完成(4)responseBodyVariant将响应信息正文作为unsigned byte数组返回responseStreamVariant将响应信息正文作为一个ADO Stream对象返回responseTextString将响应信息正文作为一个文本字符串返回responseXMLObject通过XMLDom将响应信息正文解析为XMLDocument对象statusLong服务器返回的HTTP状态码statusTextString服务器HTTP响应行状态
NameDesciptionabort取消当前 HTTP 请求getAllResponseHeaders从响应信息中检索所有的标头字段getResponseHeader从响应信息正文中获得一个 HTTP 标头值open(method, url, boolAsync, bstrUser, bstrPassword)打开一个与 HTTP 服务器的连接send(varBody)设定一个请求的标头字段setRequestHeader(bstrHeader, bstrValue)向 HTTP 服务器发送请求。可包含正文。
这里面显然就open方法比较麻烦,带了一大堆参数,它们的含义分别是:
异步通讯的示例:
xmlhttp.onreadystatechange=function()
{
if ( xmlhttp.readyState==4 )
{
alert(xmlhttp.responseText);
}
}
xmlhttp.send(null);
其实使用xmlhttp就这么简单,复杂的是服务器端数据的组织方式,而且需要开发人员同时熟悉Client和Server端的开发,才能事半功倍。可是好像说了半天这个玩意儿和xml没有什么关系啊,怎么叫xmlhttp呢?我们注意到response的数据类型中有一个responseXML,不过它解析返回的XMLDocument属于XMLDOM的内容了,和使用xmlhttp来和服务器通讯的关系并不大,以后再来细说。
from:http://www.cnblogs.com/birdshome/archive/2004/12/26/82238.html
参考 http://baike.baidu.com/view/25390.htm
- XMLHTTP
- xmlHTTP
- XMLHTTP
- XMLHTTP
- xmlhttp
- xmlhttp
- xmlhttp
- XMLHTTP
- XMLHTTP
- XmlHttp
- xmlHttp
- XMLHTTP
- xmlHTTP
- XMLHTTP
- xmlhttp
- xmlhttp
- XMLHTTP
- XMLHttp
- PPPoE的协商过程
- [Android]如何导入已有的外部数据库
- 输入一个表示整数的字符串,把该字符串转换成整数并输出
- android直接读取项目中的sqlite数据库
- C和C++中static用法简单总结
- xmlHttp
- shell kill 进程树
- C/C++宏定义的可变参数(VC6不支持可变参数宏)
- ubuntu 10.04(64位)下搭建android2.3/android4.2/4.1/4.0开发环境
- Oracle 字符集的查看和修改
- Visual Studio 2010 下 Boost.Regex 库的使用笔记
- Data structure
- 现实迷途 第二十七章 深情表白
- call 不可以使用在plsql中,只能在sql*plus中使用。