轻松掌握XMLHttpRequest对象

XmlHttp是什么?

      最通用的定义为:XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。

来自MSDN的解释:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。 现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

XmlHttp对象的属性:

XmlHttp对象的方法:


如何发送一个简单的请求?
      最简单的请求是,不以查询参数或提交表单的方式向服务器发送任何信息.使用XmlHttpRequest对象发送请求的基本步骤:
      ● 为得到XmlHttpRequest对象实例的一个引用,可以创建一个新的XmlHttpRequest的实例。
      ● 告诉XmlHttpRequest对象,那个函数回处理XmlHttpRequest对象的状态的改变.为此要把对象的
         onreadystatechange属性设置为指向JavaScript的指针.
      ● 指定请求属性.XmlHttpRequest对象的Open()方法会指定将发送的请求.
      ● 将请求发送给服务器.XmlHttpRequest对象的send()方法将请求发送到目标资源.

XmlHttpRequest实例分析
      我想大家都知道,要想使用一不对象首先我门得做什么?是不是必须先创建一个对象吧.比如C#和Java里用new来实例对象.那么我门现在要使用XmlHttp对象是不是也应该先创建一个XmlHttp对象呢?这是毫无疑问的!那么下面我们来看看在客户端怎么创建一个XmlHttp对象,并使用这个对象向服务端发送Http请求,然后处理服务器返回的响应信息.

1.创建一个XmlHttp对象(在这里我以一个无刷新做加法运算的实例 )

 1 var  xmlHttp;
 2 function  createXMLHttpRequest()
 3 {
 4   if(window.ActiveXObject)
 5   {
 6      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
 7   }

 8   else if(window.XMLHttpRequest)
 9   {
10      xmlHttp = new XMLHttpRequest();
11   }

12}

2.定义发送请求的方法

1 // 处理方法
2 function  AddNumber()
3 {
4  createXMLHttpRequest();
5  var url= "AddHandler.ashx?num1="+document.getElementById("num1").value+"&num2="+document.getElementById("num2").value;
6  xmlHttp.open("GET",url,true);
7  xmlHttp.onreadystatechange=ShowResult;
8  xmlHttp.send(null);
9}

3.定义回调函数,用于处理服务端返回的信息

 1 // 回调方法
 2 function  ShowResult()
 3 {
 4   if(xmlHttp.readyState==4)
 5   {
 6      if(xmlHttp.status==200)
 7      {
 8          document.getElementById("sum").value=xmlHttp.responseText;
 9      }

10   }

11}
      在上面这个实例中,是在客户端想服务端的AddHandler.ashx发送的请求,并传递两个参数(也就是待相加的数)过去,下面我门来看看服务端是怎么处理接收传递过去的两个参数以及怎么实现加法运算并返回结果到客户端的.代码如下:
<% @ WebHandler Language = " C# "  Class = " Handler "   %>

using  System;
using  System.Web;
using  System.Data;
using  System.Data.SqlClient;

public   class  Handler : IHttpHandler 
{
    
    
public void ProcessRequest (HttpContext context) 
    
{
        context.Response.ContentType 
= "text/plain";
        
int a = Convert.ToInt32(context.Request.QueryString["num1"]);
        
int b = Convert.ToInt32(context.Request.QueryString["num2"]);
        
int result = a + b;
        context.Response.Write(result);
    }

 
    
public bool IsReusable
    
{
        
get 
        
{
            
return false;
        }

    }

}

现在我门就可以调用AddNumber()这个方法向服务端发送请求来做一个无刷新的加法运算了.
< div  style ="text-align: center" >
        
< br  /> 无刷新求和示例 < br  />
        
< br  />
        
< input  id ="num1"  style ="width: 107px"  type ="text"  onkeyup ="AddNumber();"  value ="0"    />
        +
< input  id ="num2"  style ="width: 95px"  type ="text"   onkeyup ="AddNumber();"  value ="0"    />
        =
< input  id ="sum"  style ="width: 97px"  type ="text"   /></ div >
运行结果如下:

这个实例虽然很简单.我之所以用这个实例主要是给大家介绍XmlHttp对象的处理过程.文章后面我把项目文件提供下载.

------------------------------------------------------------------------------------------------------------
      上面把JS写到页面中了,在实际的项目开发中是不推荐这样做的,最好把JS代码都定义到一个JS文件类.我这里有一份XmlHttpRequest对象的JS(网上下载的),把相关的方法基本都写全了.下面我门来看看怎么使用这个外部JS文件来发送异步请求及响应.
我门先来看看这个JS文件的详细定义:
 1 function  CallBackObject()
 2 {
 3  this.XmlHttp = this.GetHttpObject();
 4}

 5  
 6 CallBackObject.prototype.GetHttpObject  =   function ()
 7
 8  var xmlhttp;
 9  if (!xmlhttp && typeof XMLHttpRequest != 'undefined'{
10    try {
11      xmlhttp = new XMLHttpRequest();
12    }
 catch (e) {
13      xmlhttp = false;
14    }

15  }

16  return xmlhttp;
17}

18  
19 CallBackObject.prototype.DoCallBack  =   function (URL)
20
21  ifthis.XmlHttp )
22  {
23    ifthis.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0 )
24    {
25      var oThis = this;
26      this.XmlHttp.open('POST', URL);
27      this.XmlHttp.onreadystatechange = function(){ oThis.ReadyStateChange(); };
28      this.XmlHttp.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
29      this.XmlHttp.send(null);
30    }

31  }

32}

33  
34 CallBackObject.prototype.AbortCallBack  =   function ()
35 {
36  ifthis.XmlHttp )
37    this.XmlHttp.abort();
38}

39  
40 CallBackObject.prototype.OnLoading  =   function ()
41 {
42  // Loading
43}

44  
45 CallBackObject.prototype.OnLoaded  =   function ()
46 {
47  // Loaded
48}

49  
50 CallBackObject.prototype.OnInteractive  =   function ()
51 {
52  // Interactive
53}

54  
55 CallBackObject.prototype.OnComplete  =   function (responseText, responseXml)
56 {
57  // Complete
58}

59  
60 CallBackObject.prototype.OnAbort  =   function ()
61 {
62  // Abort
63}

64  
65 CallBackObject.prototype.OnError  =   function (status, statusText)
66 {
67  // Error
68}

69  
70 CallBackObject.prototype.ReadyStateChange  =   function ()
71 {
72  ifthis.XmlHttp.readyState == 1 )
73  {
74    this.OnLoading();
75  }

76  else ifthis.XmlHttp.readyState == 2 )
77  {
78   this.OnLoaded();
79  }

80  else ifthis.XmlHttp.readyState == 3 )
81  {
82   this.OnInteractive();
83  }

84  else ifthis.XmlHttp.readyState == 4 )
85  {
86   ifthis.XmlHttp.status == 0 )
87      this.OnAbort();
88    else ifthis.XmlHttp.status == 200 && this.XmlHttp.statusText == "OK" )
89      this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML);
90    else
91      this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText);   
92  }

93}

94

一个简单的Hello实例:
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
< title > HelloWorld实例 </ title >
< script  language ="jscript"  src ="CallBackObject.js" ></ script >
        
< script  language =jscript >
        
function createRequest()
        
{
            
var name = escape(document.getElementById("name").value);
            
var cbo = new CallBackObject();
            cbo.OnComplete 
= Cbo_Complete;
            cbo.onError 
= Cbo_Error;
            cbo.DoCallBack(
"HelloWorldServer.aspx?name=" + name);                        
        }


        
function Cbo_Complete(responseText, responseXML)
        
{
            alert(responseText);
        }


        
function Cbo_Error(status, statusText, responseText)
        
{
            alert(responseText);
        }

        
</ script >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< DIV  style ="DISPLAY: inline; FONT-WEIGHT: bold; FONT-SIZE: 30px; FONT-FAMILY: Arial, Verdana"
                ms_positioning
="FlowLayout" > Hello, Ajax! </ DIV >
            
< HR  width ="100%"  SIZE ="1" >
            
< input  type ="text"  id ="name" >
            
< br >
            
< input  type ="button"  value ="发送请求"  onclick ="javascript:createRequest()" >
    
</ form >
</ body >
</ html >

     关于XmlHttpRequest对象就介绍到这里,更多更详细的内容请大家查看相关资料.
     欢迎拍砖指正,不甚感激!
本文实例源代码下载

转载于:https://www.cnblogs.com/beniao/archive/2008/03/29/1128914.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: XMLHttpRequest对象是一种能够发送HTTP或HTTPS请求并接收服务器响应的JavaScript API。它可以用于创建异步的Web应用程序,不需要刷新页面就可以更新内容。这个对象通常被用于AJAX编程中,但它也可以用于其它的网络通信。 ### 回答2: XMLHttpRequest对象是一种在JavaScript中使用的原生对象,它允许在客户端和服务器之间进行异步数据交换。通过使用XMLHttpRequest对象,我们可以向服务器发送HTTP请求,并在不刷新整个页面的情况下获取服务器的响应数据。 XMLHttpRequest对象最主要的功能是通过HTTP协议向服务器发送请求,以下是实现HTTP请求的几个基本步骤: 1. 创建一个XMLHttpRequest对象:使用`new XMLHttpRequest()`来创建一个XMLHttpRequest对象。 2. 设置请求的方法和地址:使用`open()`方法来设置HTTP请求的方法(如GET、POST等)和请求的地址。 3. 设置请求头部信息:可以通过`setRequestHeader()`方法来设置HTTP请求的头部信息,例如设置Content-Type等。 4. 发送请求:使用`send()`方法来发送HTTP请求,如果是POST请求,可以在send()中传递请求的参数。 5. 监听响应:通过设置`onreadystatechange`属性,并使用`onreadystatechange`事件来监听请求的状态变化。 6. 获取响应数据:可以使用`responseText`属性来获取服务器响应的文本数据,使用`responseXML`属性获取服务器响应的XML数据,以及其他相关属性。 XMLHttpRequest对象的出现使得客户端和服务器之间的数据交换更加灵活和高效。它可以用于获取服务器返回的数据,并以各种形式展示在网页中,例如动态更新页面内容、实现无刷新提交表单、实时获取服务器数据等。同时,XMLHttpRequest对象也被广泛用于实现Ajax技术,实现异步更新页面的效果。 需要注意的是,由于浏览器的安全限制,XMLHttpRequest对象只能用于请求同源策略下的资源。如果需要请求其他域名下的资源,可以使用CORS(跨域资源共享)或者代理方式来解决。此外,XMLHttpRequest对象也有一些局限性,例如无法同时发送多个请求、无法监听请求进度等。因此,在一些复杂的应用场景下,可能需要使用其他技术来完成数据交换的需求。 ### 回答3: XMLHttpRequest对象是一种在前端开发中用于与服务器进行通信的API。它是浏览器提供的用于发送和接收HTTP请求的对象之一。 XMLHttpRequest对象的使用主要分为几个步骤。首先,我们需要创建一个XMLHttpRequest对象,可以通过调用`new XMLHttpRequest()`来实现。然后,可以使用`open()`方法来指定发送请求的方式(GET、POST等)、URL地址以及是否采用异步方式发送请求。接下来,使用`send()`方法将请求发送到服务器。 在请求发送完成后,XMLHttpRequest对象将会接收服务器的响应。我们可以通过`onreadystatechange`事件来监听ReadyState状态的变化,并在状态为4(请求已完成)时处理服务器的响应。此时,可以使用`status`属性来获取服务器返回的状态码,通过`responseText`或`responseXML`属性获取服务器返回的数据。 XMLHttpRequest对象是一个功能强大且广泛使用的技术,可以用于实现各种与服务器交互的功能。例如,可以使用该对象发送Ajax请求,实现页面的无刷新更新。同时,也可以使用它来实现登录验证、数据传输、文件上传等功能。此外,XMLHttpRequest对象支持跨域请求,可以实现访问不同域名下的资源。 总之,XMLHttpRequest对象是前端开发中不可或缺的一部分,它使得我们可以通过JavaScript与服务器进行通信,实现更加丰富和动态的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值