轻松掌握XMLHttpRequest对象

来源:互联网 发布:房车数据 编辑:程序博客网 时间:2024/05/09 19:45

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对象(在这里我以一个无刷新做加法运算的实例 )

 1var xmlHttp;
 2function 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//处理方法
2function 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//回调方法
 2function 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>

运行结果如下:

原创粉丝点击