`

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

阅读更多

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

分享到:
评论

相关推荐

    xmlhttp.rar_XMLHTTP delphi_delphi xmlHt_delphi xmlhttp_xmlhttp

    这个“xmlhttp.rar”压缩包包含的资源是关于如何在Delphi环境中使用XMLHTTP组件来从网络获取数据,特别是通过调用百度API获取实时时间的示例。这对于初学者来说是一个很好的起点,因为它可以帮助理解如何与Web服务...

    VFP xmlHTTP应用实例

    xmlHTTP对象是XMLHttpRequest的简称,它是浏览器中的一个组件,允许客户端通过JavaScript或其他语言与服务器进行异步数据交换,实现AJAX(Asynchronous JavaScript and XML)技术的核心。在VFP中,我们可以通过创建...

    ajax说明 事件 绑定 数据

    在示例中,使用了ASP.NET的C#语言,通过`Request`对象获取GET或POST请求的参数,并根据参数值返回不同的数据。 总结来说,Ajax技术包括以下几个关键部分: 1. 数据交互:通过XMLHttpRequest对象与服务器进行通信。...

    基于ASP的天气预报插件源码 v1.0.zip

    Set requestObject = Server.CreateObject("MSXML2.XMLHTTP") requestObject.Open "GET", "http://api.weatherprovider.com/weather?location=Shanghai", False requestObject.Send Dim responseText As String ...

    xmlhttp无刷新

    - **定义**:服务器返回的响应可以是XML格式的数据,客户端可以通过`XMLHttpRequest`对象的`responseXML`属性获取到XML文档对象,进而解析和操作数据。 - **示例代码**: ```javascript function GetText() { var...

    delphi7使用IXMLHTTPRequest实现RESTful的访问及返回json数据的解析

    SuperObject是一个强大的、易于使用的JSON解析和生成器,它提供了一个简洁的API,使得在Delphi中处理JSON数据变得非常方便。你可以将接收到的HTTP响应转换为字符串,然后使用SuperObject的构造函数将其解析为一个...

    asp.net中使用ajax向数据库中插入数据

    ### ASP.NET中使用Ajax向数据库中插入数据 在ASP.NET应用程序开发过程中,使用Ajax技术能够实现页面局部刷新,提升用户体验。本文将详细讲解如何在ASP.NET应用中利用Ajax技术完成向数据库插入数据的操作。 #### 一...

    AJAX技术原理和使用方法

    1. **减轻服务器负担**: AJAX遵循“按需取数据”的原则,只获取必要的数据,减少了冗余请求和响应,从而减轻了服务器压力。 2. **提高用户体验**: 用户无需等待整个页面的重新加载,只需要等待局部内容的更新,大大...

    web2.0 AJAX技术.doc

    4. **XMLHttpRequest**:这是AJAX的关键组件,允许网页在后台与服务器异步通信,即无需重新加载页面即可获取和更新数据。 ### 二、AJAX的工作原理 AJAX的工作机制在于它能够使得用户操作与服务器响应异步化。具体...

    javascript 进阶篇3 Ajax 、JSON、 Prototype介绍

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Ajax中,JSON经常被用来作为数据传输格式,因为它的结构与JavaScript对象相似,能直接被JavaScript...

    探讨Ajax获取表单值向Servlet传递的设计方案.doc

    一旦我们获取了表单数据,就可以使用Ajax发送到服务器。这里有两个主要的HTTP请求方法:GET和POST。GET方法适用于数据量小的情况,而POST则适合大量数据的传递。以下是一个使用GET和POST方法的例子: ```javascript...

    AJAX快速入门与常用使用方法

    使用DOM(Document Object Model)进行动态显示及交互;使用XML和XSLT进行数据交换及相关操作;使用XMLHttpRequest进行异步数据查询、检索;使用JavaScript将所有的东西绑定在一起。 AJAX的优势包括: 1. 通过异步...

    用javascript读取xml文件读取节点数据__1.docx

    在提供的代码段中,我们看到一个简单的 AJAX(Asynchronous JavaScript and XML)请求被用来从服务器获取一个 XML 文件,并且解析其中的特定节点以展示新闻信息。下面将详细解释这个过程。 首先,XMLHttpRequest ...

    非常好Ajax基础教程

    当服务器返回XML数据时,可以使用DOM(Document Object Model)来解析并操作这些数据。例如,获取XML文档中的第一个节点: ```javascript var xmlDoc = http_request.responseXML; var firstNode = xmlDoc....

    JavaWeb之Ajax与Jqeury

    通过上述介绍,我们了解到 Ajax 主要利用 `XMLHttpRequest` 实现了浏览器与服务器之间的异步数据交换,而 jQuery 提供了一种更为便捷的方式来实现这一功能。这两种技术的应用极大地提升了 Web 应用的性能和用户体验...

    从Ajax到JQuery Ajax学习

    alert("Error creating request object!"); } return request; } ``` #### XMLHttpRequest对象的属性和方法 `XMLHttpRequest`对象具有6个方法和8个属性,这些属性和方法提供了与服务器通信的基本功能。其中,最...

    Ajax课件学习(免费)

    XMLHttpRequest是XMLHTTP组件的对象,通过这个对象,AJAX可以像桌面应用程序一样只同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作都交给服务器来做;这样既减轻了服务器负担又加快...

    AJAX开发简略 (第二部分)

    4. **服务器返回**:服务器返回响应数据。 5. **客户端接收**:XMLHttpRequest对象的`onreadystatechange`事件处理器检测到`readyState`变为4(完成)且`status`为200(成功)时,读取`responseText`或`responseXML`...

    ajax基础教程.doc

    虽然名字里带有XML,但现代的Ajax更常使用JSON(JavaScript Object Notation)作为数据交换格式,因为JSON与JavaScript语法紧密关联,解析和序列化更加便捷。 通过以上步骤,你就能创建基本的Ajax请求,实现动态...

Global site tag (gtag.js) - Google Analytics