分享
 
 
 

使用XMLHTTP Request Object获取服务器数据

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据,我们可以获取和发送任何类型的数据,甚至二进制数据到服务器上。xmlhttp技术同时也是目前大多数无刷新页面使用的和服务器交换数据的方式,这种方式比以往的隐藏iframe的方法要方便和经济的多。

同时让我们高兴得是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){}

}

使用xmlhttp对象其实是并不是什么困难的事,它一共就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接口):

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

method

HTTP的通信方式,比如GET, HEAD, POST, PUT, DELETE, CONNECT等

url

接收数据的服务器的URL地址,URL可带QueryString

boolAsync

一个布尔标识,说明请求是否为异步的。如果是异步通信方式,客户端就不等待服务器的响应;如果是同步方式,客户机会等到服务器返回消息后才去执行其它操作

bstrUser

用户ID,用于服务器身份验证

bstrPassword

用户密码,用于服务器身份验证

异步通讯的示例:

xmlhttp.open("GET", "default.aspx", true);

xmlhttp.onreadystatechange = function()

{

if ( xmlhttp.readyState==4 )

{

alert(xmlhttp.responseText);

}

}

xmlhttp.send(null);

其实使用xmlhttp就这么简单,复杂的是服务器端数据的组织方式,而且需要开发人员同时熟悉Client和Server端的开发,才能事半功倍。可是好像说了半天这个玩意儿和xml没有什么关系啊,怎么叫xmlhttp呢?我们注意到response的数据类型中有一个responseXML,不过它解析返回的XMLDocument属于XMLDOM的内容了,和使用xmlhttp来和服务器通讯的关系并不大,以后再来细说。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有