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

object|request|xml|服务器|数据

  在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对象的属性和方法列表:

   
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来和服务器通讯的关系并不大,以后再来细说。

时间: 2024-09-24 01:37:24

使用XMLHTTP Request Object获取服务器数据的相关文章

浅谈ASP中Request对象获取客户端数据的顺序

request|对象|客户端|数据 浅谈ASP中Request对象获取客户端数据的顺序 /**描述:在使用ASP Request对象时需要注意的小问题作者:慈勤强Email : cqq1978@yeah.net**/ 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了.虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写?strMessage = Request("msg")strMessage = Request.Form(&qu

wince 6.0 如何使用C++ 获取服务器数据(http)

问题描述 wince 6.0 如何使用C++ 获取服务器数据(http) 求教如何编写C++的代码,来使wince 6.0 能通过 http 来获取服务器信息? 最好可以提供一个 demo(使用vs2005)

技巧:ASP中用Request对象获取客户端数据

request|对象|技巧|客户端|数据 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了. 虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写? strMessage = Request("msg") strMessage = Request.Form("msg") 而且,我也看过好多人写的代码,一律都是Request("")的写法,当然这样的写法并没有什么错. 只是大家应该注意 Req

ASP中Request对象获取客户端数据的顺序

request|对象|客户端|数据 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对它也是非常熟悉了. 虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写? strMessage = Request("msg")strMessage = Request.Form("msg") 而且,我也看过好多人写的代码,一律都是Request("")的写法,当然这样的写法并没有什么错. 只是大家应该注意Request对

ASP中Request对象获取客户端数据的顺序(容易忽略)_ASP基础

在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了.虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写? strMessage = Request("msg") strMessage = Request.Form("msg") 而且,我也看过好多人写的代码,一律都是Request("")的写法,当然这样的写法并没有什么错. 只是大家应该注意 Request对象有几个集合来获取客户端提交的数据

ASP中Request对象获取客户端数据的顺序(容易忽略)

在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了.虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写? strMessage = Request("msg") strMessage = Request.Form("msg") 而且,我也看过好多人写的代码,一律都是Request("")的写法,当然这样的写法并没有什么错. 只是大家应该注意 Request对象有几个集合来获取客户端提交的数据

AJAX获取服务器当前时间及时间格式输出处理_AJAX相关

AJAX获取服务器当前时间 ------------------------------ WebService1.asmx---------------------------------- 复制代码 代码如下: // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释. [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebS

AJAX获取服务器当前时间及时间格式输出处理

AJAX获取服务器当前时间 ------------------------------ WebService1.asmx---------------------------------- 复制代码 代码如下: // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释. [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebS

AJAX Hacks 之HACK2. 使用Request对象与服务器进行数据传递

ajax|request|对象|服务器|数据 AJAX Hacks 之HACK2. 使用Request对象与服务器进行数据传递 以传统的传送表单数据的方式开始,本节介绍使用post方法发送数据,与服务器进行通信,而在这个过程中不会出现页面刷新现象.然后显示服务器相应的信息. 页面很简单,就是一个表单,要求用户输入姓名.性别.国家或地区.输入完毕用户可以提交表单.(具体图示见原文) 页面的HTML代码如下:"http://www.w3.org/TR/1999/REC-html401–1999122