Ajax之二 Ajax基础(下)

简介: Ajax之二 Ajax基础(下)

项目一:建立Ajax和Asp.Net页面结合的案例


1.      首先建立一个没有使用AJAX功能的简单页面,客户端代码如程序清单2-1所示:

程序清单2-1  利用XMLHttpRequest对象测试Ajax案例

<%@ PageLanguage="C#" AutoEventWireup="true"  CodeFile="ajax.aspx.cs"Inherits="_Default" %>
<!DOCTYPEhtml PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml" >
<headrunat="server">
    <title>Ajax和Asp.Net页面结合的案例</title>
    <script language="javascript"type="text/javascript">
        function getXMLHTTP()
        {
            var XMLHTTP=null;
            if(window.ActiveXObject)
            {
                try{
                    XMLHTTP=newActiveXObject("Microsoft.XMLHTTP");
                }catch(e){}
            }else if(window.XMLHttpRequest)
            {
                try{XMLHTTP=newXMLHTTPRequest();
                            }catch(e){}
            }
            return XMLHTTP;
        }
        var XMLHTTP=getXMLHTTP();

    //创建一个XMLHttpRequest对象,如果成功,向服务器发送一个带有参数sendData=ok(也可以是任意值)的GET请求。接着给onreadystatechange属性设置一个函数,最后将这个请求发送到服务器。      

 if(XMLHTTP!=null)
        {
           XMLHTTP.open("GET","ajax.aspx?sendData=ok");
           XMLHTTP.onreadystatechange=stateChanged;
            XMLHTTP.send(null);
        }
        function stateChanged()
        {
            if(XMLHTTP.readyState==4 &&XMLHTTP.status==200)
               window.alert(XMLHTTP.responseText);
        }
    </script>
</head>
<body>
    <form id="form1"runat="server">
    <div>
        <p>Wait and see...</p>
    </div>
    </form>
</body>
</html>


2.      在页面的加载事件代码如下:

protected voidPage_Load(object sender, EventArgs e)
    {
        if(Request.QueryString["sendData"] != null &&
           Request.QueryString["sendData"] == "ok")
        {
            Response.Write("Hello from theserver!");
            Response.End();
        }       
    }


该程序启动之后,会首先出来图2-1,弹出警告框信息,然后才是在页面显示Wait and see…


如果想在HTTP请求上使用POST命令,那就需要设置open()方法的第一个参数。当需要向服务器发送超过500字节的数据(因为这可能超出URL的最大长度)或不想被代理服务器缓存的时候,使用POST是尤为重要的。把要发送的数据以名值对一级经过URL编码(如果需要的话)的形式提供给send()函数,就像下面的代码片段那样:


XMLHTTP.open(“POST”,”ajax.aspx”);
       XMLHTTP.onreadystatechange=stateChanged;
       XMLHTTP.send(“sendData=ok&returnValue=123”);


      通过POST命令发送的数据,在Asp.Net中要使用Request.Form属性来进行读取,而不是针对GET请求的Request.QueryString属性。


   


500个字节只是一个保守数字而已,各种浏览器对URL的长度支持可能是不同的。



项目二:建立使用Xml格式的AJAX的页面程序

1.建立一个Asp.Net程序,可以使用动态页面也可以使用静态页面,此处使用的是静态页面,名字为SimpleAjax.htm,代码如程序清单2-2所示:


程序清单2-2


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>简单Ajax示例</title>
    <script type="text/javascript" language="javascript">
        varxmlHttp;
        functioncreateXmlHttpRequest()
        {
           //判断是否为IE浏览器
           if(window.ActiveXObject)
           {
              xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           else if(window.XMLHttpRequest)
           {
              xmlHttp=new XMLHttpRequest();
           }
        }
        //启动对页面的请求
        function startRequest()
        {
           createXmlHttpRequest();
           //当请求状态发生改变会调用该javaScript方法
           xmlHttp.onreadystatechange=handleStateChange;
           //建立对服务器的调用,此方法有3个参数,
           //第一个参数说明你请求服务器的方式,第二个参数确定你请求的服务器端的URL,第三个参数说明处理方式是否为异步处理
           //这里的异步提交是真正体现了Ajax优势的方式,当设定为False时,主要应用于持久化页面的设定。
          //这里设定请求服务器地址
           xmlHttp.open('GET',"TestData.xml",true);
           //即向服务器发送请求,向服务器端发送某些数据可以是流、Document对象,字符串等对象,如果设定为异步提交,此方法一定会立即返回
           //但同步提交时该方法一定需要服务器相应
           //传入这个方法的内容会作为请求体的一部分发送
           xmlHttp.send(null);
        }
        functionhandleStateChange()
        {
           // 判断XMLHttpRequest对象读取服务器响应状态 4 说明对服务器响应读取完成
           if(xmlHttp.readyState==4)
           {
               //判断Http状态码 200 说明服务器地址正确、请求正确
              if(xmlHttp.status==200)
              {
                   //接收服务器回应的XmlDocument对象
                   varxmlDoc=xmlHttp.responseXml;
                 //通过控件ID找到控件testData
                   vartestData=document.getElementById('testData');
                 //解析服务器回应的XmlDocument对象 并设定testData的值为服务器回应XML数据
                   testData.innerHTML="<b>"+xmlDoc.getElementsByTagName('data')[0].firstChild.nodeValue+"</b>";
              }
           }
        }
    </script>
</head>
<body>
    <input type="button" id='btnAjax' value='触发Ajax事件'  onclick='startRequest();'/>
    <div id='testData' class="color:#ff0000"></div>
</body>
</html>

2.添加一个xml文件,TestData.xml,内容如下:

    <?xmlversion="1.0"encoding="utf-8" ?>
    <root>
        <data>
       测试数据 仅仅为了显示Ajax异步提交及与服务器通信的实例
       </data>
</root>

2.


请大家比较项目一和项目二的异同。



@        本章总结


1.      本章介绍了XMLHttpRequest对象的相关属性和方法


2.      使用利用不同浏览器结合XMLHttpRequest对象来显示数据。


3.      利用不同浏览器、XML和XMLHttpRequest对象读取数据。

目录
相关文章
|
XML 前端开发 JavaScript
Ajax之二 Ajax基础(上)
Ajax之二 Ajax基础
33 0
|
开发框架 前端开发 JavaScript
Ajax之一 简介篇(上)
Ajax之一 简介篇
57 0
|
XML 开发框架 前端开发
Ajax之一 简介篇(下)
Ajax之一 简介篇(下)
77 0
|
Web App开发 前端开发 JavaScript
Ajax:服务器的基本概念与初识Ajax
Ajax:服务器的基本概念与初识Ajax
123 0
|
6月前
|
XML 前端开发 JavaScript
Ajax的基础使用
Ajax的基础使用
42 0
|
前端开发
Ajax基本案例详解之$.get的实现
前面我已经写过一篇ajax的$.ajax的实现了,其中html,css,doindex.jsp里面已经详细列出来了,这篇主要写的是$.get()的实现,其中html,css,doindex.jsp都和Ajax基本案例详解之$.get的实现 里面的一样,所以这里就不重复的写了,在这里只写一下<script>里面的内容就行
|
前端开发 UED 开发者
如何使用 Ajax?
Ajax 可以使Web应用更加迅捷动态化
111 0
|
数据采集 XML 前端开发
【Ajax入门技术】了解Ajax
【Ajax入门技术】了解Ajax
120 0
【Ajax入门技术】了解Ajax
|
XML 前端开发 JavaScript
|
XML 前端开发 JavaScript
Ajax 基础
Ajax 基础
116 0
Ajax 基础