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

XMLHttpRequest对象详解

    博客分类:
  • Ajax
阅读更多

本文章参考自:《征服Ajax Web 2.0 开发技术详解》为了方便自己日后查阅并与大家共享。

 

1.概述

    XMLHttpRequest对象是整个Ajax开发的基础,提供了客户端和服务器端进行异步通信的能力。XMLHttpRequest对象由JavaScript创建并使用,客户端可以只从服务器端获取需要的信息,通过与DOM和CSS的结合,可以实现局部刷新;同时还可以通过XMLHttpRequest对象异步提交数据,将页面中的数据在后台提交到服务器端而无需刷新页面。

2. 创建XMLHttpRequest对象

    XMLHttpRequest对象不是一个国际标准。在不同的浏览器有不同的表现。所以在实现跨浏览器运行的Ajax应用时,必须考虑所有的使用场合。下面给出了比较通用的创建XMLHttpRequest对象的方法。

var xmlhttp;
	try{
	//IE 5.0 
		xmlhttp = new ActiveXObject('Msxm12.XMLHTTP');
	}catch(e){
		try{
		//IE 5.5 及更高版本
			xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
		}catch(e){
			try{
			//其他浏览器
				xmlhttp = new XMLHttpRequest();
			}catch(e){}
		}
	}

 

3. 使用 Open方法创建请求

    创建好XMLHttpRequest对象后,使用其Open方法,创建一个请求,并准备向服务器发送,其open方法原型如下:

   open(method,url,asynchronous,user,password);

   其中参数含义如下:

  • method: 指请求的类型,一般为get或者post
  • url: 指定请求的地址,可以是绝对地址或相对地址,可以附带查询字符串。
  • asynchronous:可选参数,表示是同步还是异步,异步请求为fasle,同步为true,默认情况下该参数为true。(注:对于这个参数的理解本人还不是完全理解,希望理解的同仁帮忙注释下。
  • user:可选参数,指定请求的用户名,没有则省略。
  • password:可选参数,指定请求的密码,没有则省略。

4. 使用send方法发送一个请求

    使用open方法创建了请求后,可以使用send方法向服务器发送该请求,其原型如下:

    send(body);

    该方法仅有一个body参数,它表示要向服务器发送的数据,其格式为查询字符串的形式。如:

    var body="method=search&parm=java";

    定义了向服务器发送两个名/值对,它们用&符号隔开。如果在open中指定的是get方法,则这些参数作为查询字符串提交,服务器端一般用request.querystring获得;如果采用post方法,则这些参数作为HTTP的post方法提交,服务器端一般用request.form来获取。其中body参数是必须的,如果不发送任何数据,可以使用xmlhttp.send(null)的形式。

    如果在open方法中指定的是异步请求,则send方法执行后会立即执行下一条语句,否则send方法一直阻塞,直到请求完成或超过时才执行下一条语句。这也是同步请求与异步请求之间的区别。

    如果open方法中指定的是用post方法提交请求,那么在send之前必须使用如下的语句设置HTTP头,语法如下:

    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

5. 使用onreadystatechange事件捕获请求的状态变化

    在发送请求后,一般都是通过事件机制来捕获请求的状态,XMLHttpRequest对象提供了onreadystatechange事件来捕获请求状态信息。

    Onreadystatechange事件可以指定一个事件处理函数处理XMLHttpRequest对象的执行结果,例如:

    xmlhttp.onreadystatechange = function() {

            //事件处理语句

    }

    xmlhttp.open(...);

    xmlhttp.send(...);

    这里将事件绑定在调用open和send方法之前进行,是因为这两个方法都会触发onreadystatechange事件。

6. 使用readyState属性判断请求状态

    onreadystatechange事件是在readyState属性发生时触发的,readyStatea的值表示了当前请求的状态,在事件处理程序中可以根据这个值来进行不同的处理。下表介绍了各个值的含义。

 

readyState值 含义
0 这也是readyState一开始具有的值,表示对象已经建立,但还未初始化,这时尚未调用open方法
1 表示open方法已经调用,但尚未调用send方法
2 表示send方法已调用,其数据未知
3 表示请求已经发送成功,正在接收数据
4 表示数据已接收成功。此时相当于直接使用浏览器打开网页,状态栏显示“完成”字样
分享到:
评论
1 楼 glamey 2008-07-12  
这个可以封装下,让他返回一个xmlHttpReq

相关推荐

    XMLHTTPRequest对象详解

    XMLHTTPRequest对象是Web开发中用于实现异步数据通信的关键技术,尤其在JavaScript中广泛使用,使得页面无需刷新就能与服务器交换数据并更新部分内容。这一技术最初由Microsoft引入,但现在已经成为了非官方的标准,...

    全面剖析XMLHttpRequest对象

    #### XMLHttpRequest对象详解 XMLHttpRequest对象是AJAX技术的基础,它允许JavaScript异步地从服务器请求数据。下面我们将详细介绍XMLHttpRequest对象的主要属性和方法。 ### 属性介绍 - **readyState**:表示...

    XMLHttpRequest对象手册.pdf

    ### XMLHttpRequest对象详解 #### 一、引言 随着互联网技术的发展与演进,网页应用从简单的静态页面逐渐向动态交互式应用转变。其中,Ajax(Asynchronous JavaScript and XML)技术的出现极大地推动了这一进程。**...

    XMLHttpRequest对象

    ### XMLHTTPRequest对象详解 在现代Web开发中,Ajax(Asynchronous JavaScript and XML)技术的应用非常广泛,它使得网页能够实现局部刷新,提升了用户体验。而这一切的基础便是`XMLHttpRequest`对象,一个用于在...

    Ajax之XMLHttpRequest详解

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

    XMLHTTPREQUEST

    ### XMLHTTPRequest对象详解 在现代Web开发中,客户端与服务器之间的数据交换是非常常见的需求之一。为了实现这种异步数据通信,JavaScript提供了一种强大的工具——`XMLHTTPRequest`对象。通过这个对象,开发者...

    《疯狂Ajax讲义(第3版).part4

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    《疯狂Ajax讲义(第3版).part1

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    《疯狂Ajax讲义(第3版).part7

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    《疯狂Ajax讲义(第3版).part3

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    《疯狂Ajax讲义(第3版).part2

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    《疯狂Ajax讲义(第3版).part6

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    《疯狂Ajax讲义(第3版).part5

    第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...

    XmlHttpRequest对象直接访问与通过Soap协议访问WebSevice详解示例

    XMLHttpRequest对象是JavaScript中用于实现异步HTTP请求的关键工具,它允许前端与服务器进行通信而无需刷新整个网页。在Web开发中,它被广泛应用于AJAX(Asynchronous JavaScript and XML)技术,实现实时更新页面...

Global site tag (gtag.js) - Google Analytics