`
daniel_tu
  • 浏览: 182701 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ajax与XMLHttpRequest对象

    博客分类:
  • Ajax
阅读更多

      XMLHttpRequest是XMLHttp组件的对象,通过这个对象,Ajax可以像桌面应用程序一样只与服务器进行数据层的交换,而不必每次都刷新界面,也不必每次将数据处理的工作都交给服务器来做;这样既减轻了服务器负担又回忆了响应速度,缩短了用户的等待时间。
 XMLHttpRequest对象与Ajax
       在Ajax应用程序中,XMLHttpRequest对象负责将用户信息以异步通信地发送到服务器端,并接收服务器响应信息和数据。
       需要注意的是JavaScript本身并不具有向服务器发送请求的能力,要么使用window.open()方法重新打开一个页面,要么使用XMLHttpRequest对象发送请求,不同的是,前者是普通的即同步交互模式,而后者是异步交互模式。
       XMLHttpRequest对象的属性和方法。
       IE5.0 开始,开发人员就可以在WEB页面内部使用XMLHTTP ActiveX组件扩展自身的功能,而Mozilla1.0及NetScape7则是创建继承XML的代理类XMLHttpRequest;对于大多情况 XMLHttpRequest和XMLHttp组件很相似,方法和属性类似,只是部份属性不同。以下代码演示了如果在IE以及NetScape等浏览器中创建XMLHttpRequest对象。

<script language="javascript">
        
//定义一个变量
        var http_request = false;
        
//IE浏览器中创建
        http_request = new ActiveXObject("Msxml2.XMLHTTP");//新版本IE
        http_request = new ActiveXObject("Microsoft.XMLHTTP");//旧版本IE
        //Netscope浏览器
        http_request = new XMLHttpRequest();
    
</script>

      需要注意的是 在微软最新的 IE7.0版本浏览器中也已经支持了XMLHttpRequest,也就是说在IE7.0中同时支持以及上二种创建方式。在我们开发AJAX应用程序时一定要注意要兼容浏览器类型。
      创建方式可以如下:

    var http_request = false;
    
function createXMLHttpRequest()
    
{        
        http_request 
= false;
        
//开始初始化XMLHTTPRequest对象
        if(window.XMLHttpRequest)//如果是window.XMLHttpRequest对象
        {
            
//Mozilla,netscape 浏览器
            http_request = new XMLHttpRequest();    
            
if (http_request.overrideMimeType) {//设置MiME类别
            //有些版本的浏览器在处理服务器返回的未包含XML mime-type头部信息的内容时会报错,因此,要确保返回的内容包含text/xml信息。
            http_request.overrideMimeType("text/xml");
        }

        }

        
else if(window.ActiveXObject)//如果是window.ActiveXObject
        {
            
//IE浏览器
            try
            
{
                http_request 
= new ActiveXObject("Msxml2.XMLHTTP");//IE较新版本
            }

            
catch (e)
            
{
                
try
                
{
                    http_request 
= new ActiveXObiect("Microsoft.XMLHTTP"); //ie旧版本
                }

                
catch (e){}
            }

        }

        
if(!http_request)
        
{
            
//异常,创建对象实例失败
            window.alert("不能创建XMLHttpRequest对象实例。");
            
return false;
        }

    }


这样就是一个简单的跨浏览器的创建方法。

      另外XMLHttpRequest对象提供了一系列属性和方法,来向服务器端发起异步HTTP请求,监听服务器状态,并在服务器完成数据响应处理之后接收服务器端返回的信息数据。下面是对其的说明:
 XMLHttpRequest 对象属性
 
 onreadystatechange:指定当readyState属性改变时的事件处理句柄,属性只写。
    XMLHttpRequest 对象属性onreadystatechange是readyState状态改变的事件触发器,用来指定当readyState属性发生改变时的处理事件。在使用过程中,通常通过将事件处理函数名称赋予onreadystatechange的方式,来为XMLHttpRequest指定事件触发器,而在事件处理函数中判断readyState状态值并做相应的处理。
    如上:http_request.onreadystatechange = processRequest;processRequest作为事件处理函数,并在processRequest函数体内在readyState状态为 4 时开始执行。
 readyState:返回当前请求的状态,属性只读。
    这些状态用长度为4的整形数据表示,其属性的状态含义如下:
    0:未初始化(对象已经建立,但是未初始化,即尚未调用open方法创建http请求)
    1:初始化(对象已经建立,但是未调用send方法发送http请求)
    2:发送数据(send方法已经被调用,但是当前的状态以及http头未知)
    3:数据传送中(已经接收部分数据,因为响应及http头不全,这时通过response系统方法获取部分数据会出现错误)
    4:传送完成(数据完毕,此时可以通过response系统方法获取完整的回应数据)
 responseBody:将回应信息正文以unsigned byte 数组形式返回,属性只读。
 responseText:以字符串的形式返回服务器响应信息,属性只读。
 responseXML:将响应信息格式化为XML Document对象返回,属性只读。
   
    XMLHttpRequest对象的方法以及含义如下
    abort:取消当前请求;
        语法:http_request.abort();调用此方法,当前请求返回uninitialized状态。
    getAllResourceHeaders:获取相应的全部http头信息;像JSP中的HttpServletRequest对象一样,获取http请求的     请求头信息,语法:headers = http_request.getAllResourceHeaders();
    getResourceHeader:从响应信息中获取指定的http头信息。
        语法:head = http_request.getResourceHeader("header-name");
    open:创建一个新的http请求,并指定此请求的方法,URL,以及验证信息(用户名/密码)。
        语法:http_request.open(method,url,async,user,password);
        async为布尔值,指定请求是否异步方式,默认为true;如果为真,当state状态改变时会调用    onreadystatechange属性指向的回调函数。如果服务器需要验证,则应该指定用户名和密码 。
    send:发送请求到http服务器并接收回应。创建http请求后,就可以向服务器发送http请求,send方法被调用
       语法:http_request.send(varBody);
      参数varBody为要发送给服务器的内容。如果没有内容要发送,varBody参数可以省略,但最好写为null,因为如果省略不写在Firfox中会报错,所以就为http_request.send(null);。此方法的同步或异步方式取决于open方法中的async参数。
    setRequestHeader:单独设定请求的某个头。
 status:返回当前HTTP请求的状态码,属性只读。如:404=“文件未找到”,200=“成功”
 statusText:返回当前HTTP请求的状态行,属性只读。

分享到:
评论
1 楼 蒋中正 2009-02-26  
  

相关推荐

    Ajax深度剖析,XMLHttpRequest对象大揭秘

    XMLHttpRequest对象是Ajax技术的基础,它允许JavaScript在页面不刷新的情况下与服务器进行通信。创建一个XMLHttpRequest实例非常简单: ```javascript var xhr = new XMLHttpRequest(); ``` 一旦创建了实例,我们...

    WEB开发 之 AJAX - 创建 XMLHttpRequest 对象.docx

    **WEB开发中的AJAX与XMLHttpRequest对象** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器交换数据并局部刷新页面,极大地提升了用户...

    Ajax 创建XMLHttpRequest对象,兼容所有主流浏览器(IE5除外)

    经测试,用此方法创建XMLHttpRequest对象,在运用AJAX的时候,可以的兼容IE6,IE7,IE8,Opera,Safari,Google Chrome,fireFox。主流的应该就这些吧?theWorld,遨游等浏览器都是以IE为核心的,所以肯定也没问题。 另外...

    全面剖析Ajax的XMLHttpRequest对象.doc

    Ajax 中的 XMLHttpRequest 对象 Ajax 是一种异步的 JavaScript 与 XML 技术,用于在客户端脚本与服务器之间实现数据交互过程。XMLHttpRequest 对象是 Ajax 的技术基础,尽管现在提供了各种 Ajax 框架,但是理解这个...

    VS2008 AJAX控件介绍 AJAX组成及XMLHttpRequest对象

    XMLHttpRequest对象是AJAX的核心,它允许JavaScript在不刷新页面的情况下与服务器进行通信。创建XMLHttpRequest对象后,可以调用其open()方法指定HTTP请求类型(GET或POST)、URL以及是否异步执行。接着,使用send()...

    全面剖析 Ajax XMLHttpRequest对象

    XMLHttpRequest对象是Ajax技术的核心,它是现代Web应用中用于实现客户端与服务器间异步数据交换的关键组件。在不刷新整个页面的情况下,XMLHttpRequest允许开发者通过JavaScript动态更新网页内容,极大地提升了用户...

    asp.net ajax操作xmlHttpRequest对象返回的ResponseXML和ResponseText例子

    在ASP.NET AJAX开发中,XMLHttpRequest对象是进行异步数据通信的核心组件,它允许我们向服务器发送请求并接收响应,而无需刷新整个页面。在这个例子中,我们将关注如何处理服务器返回的数据,特别是`ResponseXML`和`...

    Ajax核心对象XMLHTTPRequest

    Ajax核心对象XMLHTTPRequest详细参数及例子

    jQuery AJAX XMLHttpRequest对象PPT

    XMLHttpRequest对象是JavaScript中用于异步数据交换的核心组件,它是AJAX(Asynchronous JavaScript and XML)技术的基础。AJAX允许网页在不刷新整个页面的情况下,仅更新部分区域,从而提高用户体验。尽管名称中...

    AJAX核心技术1-XMLHttpRequest对象的使用

    [王兴魁]AJAX核心技术1-XMLHttpRequest对象的使用

    ajax 对象池,一个页面多个XMLHttpRequest对象

    ajax XMLHttpRequest。。。。。。

    ajax 入门基础之 XMLHttpRequest对象总结

    总之,XMLHttpRequest对象是实现Ajax技术的关键,它提供了一种与服务器进行无刷新交互的方式,极大地提升了Web应用的用户体验。理解并熟练掌握XMLHttpRequest对象的使用,是成为一名合格的前端开发者的必备技能。

    创建XMLHttpRequest对象的方法.rar

    总结,"创建XMLHttpRequest对象的方法.rar"这个资源主要介绍了如何在JavaScript中创建并使用XMLHttpRequest对象进行AJAX通信,包括对象创建、状态监听、请求初始化和发送、以及响应处理等关键步骤。在实际项目中,...

    Ajax之XMLHttpRequest详解

    Ajax的核心在于**XMLHttpRequest对象**,它使得Web应用程序可以在不刷新整个页面的情况下与服务器进行异步通信。 #### 二、XMLHttpRequest对象概述 XMLHttpRequest对象是实现Ajax功能的关键组件。它提供了一种在...

    AJAX_XMLHttpRequest.rar_ajax java_ajax xmlhttpreque_opera

     在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。 ...

    XMLHttpRequest对象的介绍和实现

    Ajax的核心就是XMLHttpRequest对象,它允许网页脚本发送异步HTTP请求并与服务器进行数据交换,而无需重新加载整个页面。本文档将详细介绍XMLHttpRequest对象的基本知识、属性和方法,并演示如何使用它来进行简单的...

    Ajax using XMLHttpRequest and Struts

    Ajax技术的核心是XMLHttpRequest对象,它允许网页在不重新加载整个页面的情况下,与服务器进行数据交换,从而实现局部刷新,提升响应速度和交互性。 ### Ajax与XMLHttpRequest Ajax技术最早由Adaptive Path提出,...

    Ajax简单实例 XMLHttpRequest

    首先,要理解XMLHttpRequest对象是Ajax的核心,它负责在后台与服务器进行通信。在JavaScript中,我们可以通过以下方式创建一个XMLHttpRequest实例: ```javascript var xhr = new XMLHttpRequest(); ``` 接下来,...

    Ajax Demo Ajax 示例 XMLHttpRequest 异步 静态

    1. **XMLHttpRequest 对象**:这是 Ajax 的基石,它允许 JavaScript 在后台与服务器通信。在 JavaScript 中创建一个 XMLHttpRequest 实例,然后利用其 open() 和 send() 方法发起请求,并通过 onreadystatechange ...

Global site tag (gtag.js) - Google Analytics