<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創(chuàng)未來!
    隨筆 - 160, 文章 - 0, 評(píng)論 - 40, 引用 - 0
    數(shù)據(jù)加載中……

    Ajax基本知識(shí)

    Ajax全稱是Asynchronous JavaScript XML,這并不是一項(xiàng)新技術(shù),而只是將一些已有的技術(shù)進(jìn)行了整合,從而實(shí)現(xiàn)了頁面在不刷新的狀態(tài)下也可以連接服務(wù)器來更新頁面內(nèi)容,也即部分刷新技術(shù),或不完全刷新。
    Ajax的核心類是XMLHttpRequest類,從IE5.0開始被支持,Ajax的處理過程大概是這個(gè)樣子的:

    1.首先通過JavaScript來建立一個(gè)XMLHttpRequest類的實(shí)例;
    2.通過屬性onreadystatechange來設(shè)定回調(diào)函數(shù);
    3.調(diào)用該實(shí)例的open方法:open(數(shù)據(jù)傳送方式GET/POST,服務(wù)器URL,是否異步,[用戶名],[口令]);
    4.調(diào)用該實(shí)例的send方法:send(XML數(shù)據(jù)/字符串/流/無符號(hào)整數(shù)數(shù)組/null),注意如果為null,則表示不傳遞額外的數(shù)據(jù),僅用Open方法中指定的服務(wù)器URL來進(jìn)行響應(yīng)即可;
    5.在回調(diào)函數(shù)中先通過readyState屬性檢測異步操作的狀態(tài):未初始化(0),正在加載(1),已加載(2),交互(3),已完成(4);
    6.再在回調(diào)函數(shù)中檢測服務(wù)器返回的HTTP狀態(tài)碼status,200代表正常;
    7.再在回調(diào)函數(shù)中,利用返回的數(shù)據(jù)(responseBody:返回為無符號(hào)整數(shù)數(shù)組/responseStream:返回為IStream流/responseText :返回字符串/responseXML:返回為XML格式數(shù)據(jù)。),基于DOM,使用JavaScript技術(shù)來修改文檔的結(jié)構(gòu)。

    總結(jié)一下:
    其實(shí),Ajax就是通過JavaScript創(chuàng)建XMLHttpRequest對(duì)象,再由JavaScript調(diào)用XMLHttpRequest對(duì)象的方法完成異步通信;然后,再由JavaScript通過DOM的屬性和方法,完成頁面的不完全刷新。

    最后再說明一下異步:同步表示send之后需要一直等待服務(wù)器完全響應(yīng)之后才能進(jìn)行后續(xù)的操作,因此需要等待;而異步表示send之后立即返回,可以繼續(xù)其他的操作,而服務(wù)器一旦返回后可以自行調(diào)用回調(diào)函數(shù)來執(zhí)行動(dòng)作。

    在ASP.NET應(yīng)用中,可以先安裝一個(gè)Microsoft ASP.NET 2.0 AJAX Extensions 1.0,然后就可以使用Ajax的一些常用控件了,比如UpdatePanel,以及Timer等,但用之前不要忘記在頁面開始加一個(gè)ScriptManager;也可以再安裝AjaxControlToolkit來獲得更多的Ajax控件。

    =========================
    Ajax 應(yīng)用程序所用到的基本技術(shù)
    1.html
        組成web頁面所用到的基本元素
    2.javascript
        javascript代碼是AJAX應(yīng)用程序核心的代碼,幫助ajax程序改進(jìn)與服務(wù)器通訊以實(shí)現(xiàn)不一樣的用戶體驗(yàn)
    3.Dynamic HTML
        用于動(dòng)態(tài)更新web頁面
    4.DOM(文檔對(duì)象模型)
        用于通過javascrip代碼處理HTML或服務(wù)器返回的XML

    javascript與服務(wù)器端通信的最核心的對(duì)象
    xmlHttp對(duì)象:傳送XML格式數(shù)據(jù)的超文本傳輸協(xié)議
    實(shí)際上XMLHTTP傳輸?shù)臄?shù)據(jù)可以是XML格式數(shù)據(jù),也可以是字符串,流,或者一個(gè)無符號(hào)整數(shù)數(shù)組。還可以是URL的參數(shù),它下達(dá)的結(jié)果可以是XML格式數(shù)據(jù),也可以是字符串,流,或者一個(gè)無符號(hào)整數(shù)數(shù)組。

    調(diào)用步驟
    1、創(chuàng)建XMLHTTP對(duì)象
    2、打開與服務(wù)端的連接,同時(shí)定義指令發(fā)送方式,服務(wù)網(wǎng)頁(URL)和請(qǐng)求權(quán)限等。 
    3、發(fā)送指令。
    4、等待并接收服務(wù)端返回的處理結(jié)果。
    5、釋放XMLHTTP對(duì)象

    方法
    open(數(shù)據(jù)傳送方式(GET/POST/HEAD),服務(wù)器URL,是否異步執(zhí)行,[用戶名],[口令])
    如:
    open("GET","http://www.sohu.com",true)

    send(content)
    可以是XML格式數(shù)據(jù),也可以是字符串,流,或者一個(gè)無符號(hào)整數(shù)數(shù)組。也可以省略,讓指令通過Open方法的URL參數(shù)代入。
    如:send(null);

    setRequestHeader(HTTP 頭,HTTP 頭值)
    如:xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

    abort()取消當(dāng)前 HTTP 請(qǐng)求

    getAllResponseHeaders ()
    從響應(yīng)信息中檢索所有的HTTP 頭字段

    getResponseHeader(HTTP 頭)
    從響應(yīng)信息正文中獲得一個(gè) HTTP 標(biāo)頭值

    屬性
    onreadystatechange:用以狀態(tài)改變后所要作的處理的事件句柄。
    readyState 異步操作的狀態(tài):未初始化(0),正在加載(1),已加載(2),交互(3),已完成(4)
    responseBody:返回為無符號(hào)整數(shù)數(shù)組。
    responseStream:返回為IStream流。
    responseText :返回字符串。
    responseXML:返回為XML格式數(shù)據(jù)。
    status:服務(wù)器返回的HTTP狀態(tài)碼
    statusText :服務(wù)器HTTP響應(yīng)行狀態(tài)

    說明
    1.同步和異步
            同步狀態(tài)下發(fā)送http請(qǐng)求后,只有當(dāng)客戶端接收到來自服務(wù)端的全部應(yīng)答數(shù)據(jù)或協(xié)議棧超時(shí)返回!反之異步狀態(tài)下,直接返回。在異步方式下數(shù)據(jù)包一旦發(fā)送完畢就結(jié)束send進(jìn)程客戶端執(zhí)行其他的操作,而在同步方式下客戶端要等到服務(wù)器返回確認(rèn)消息后才結(jié)束send進(jìn)程。實(shí)際運(yùn)用中我們根據(jù)實(shí)際情況使用同步或異步,注意了如果設(shè)為同步狀態(tài)可能因?yàn)榉?wù)器返回?cái)?shù)據(jù)量大或響應(yīng)慢而導(dǎo)致不必要的長時(shí)間等待!

    2.POST和GET
            用"POST"方式發(fā)送數(shù)據(jù).可以大到4MB "GET"只能256KB
    ========================================================
    一個(gè)實(shí)例:
    <!--Request.htm----------------------------------------------------------->

    <html>

        <head>

            <title>Ajax應(yīng)用實(shí)例</title>

            <script type="text/javaScript">

                var xmlHttp;

    var requestType="";

    function createXMLHttpRequest(){

        if(window.ActiveXObject){

            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

        }

        else if(window.XMLHttpRequest){

            xmlHttp = new XMLHttpRequest();

        }

    }

    function startRequest(theRequestType){

    requestType = theRequestType;

        createXMLHttpRequest();

        xmlHttp.onreadystatechange = myCallback;

        xmlHttp.open("GET","Response.xml",true);

        xmlHttp.send(null);

    }

    function myCallback(){

        if(xmlHttp.readyState==4){

            if(xmlHttp.status==200){

                if(requestType=="all")

                    listAll();

                else if(requestType=="north")

                    listNorth();

            }

        }

    }

    function listAll(){

        var xmlDoc = xmlHttp.responseXML;

        var allProvs = xmlDoc.getElementsByTagName("prov");

        outputList("all",allProvs);

    }

    function listNorth(){

        var xmlDoc = xmlHttp.responseXML;

        var north = xmlDoc.getElementsByTagName("north")[0];

        var northProvs = north.getElementsByTagname("prov");

        outputList("north",northProvs);

    }

    function outputList(title,provs){

        var out=title;

        var currentProv = null;

        for(var i=0;i<provs.length;i++){

        currentProv = provs[i];

        out = out + “<br/>” + currentProv.childNodes[0].nodeValue;

        }

        document.getElementById(title).innerHTML = out;

    }

            </script>

        </head>

        <body>

            <h1> Ajax應(yīng)用實(shí)例</h1>

            <form action="#">

    <input type="button" value="列出所有沿海省市"

    conclick="startRequest('all'); "/>

    <div id="all"></div>

    <input type="button" value="列出江北沿海省市"

            conclick="startRequest('north'); "/>

    <div id="north"></div>

            </form>

        </body>

    </html>

    <!--Response.xml---------------------------------------------------------->

    <?xml version="1.0"encoding="utf-8" ?>

    <provs>

        <north>

                <prov>遼寧</prov><prov>河北</prov><prov>天津</prov>

                <prov>山東</prov><prov>江蘇</prov>

        </north>

        <south>

                <prov>浙江</prov><prov>福建</prov><prov>廣東</prov>

                <prov>廣西</prov><prov>海南</prov><prov>上海</prov>

                <prov>臺(tái)灣</prov><prov>香港</prov><prov>澳門</prov>

        </south>

    </provs>
     

    posted on 2008-09-21 01:22 so true 閱讀(488) 評(píng)論(0)  編輯  收藏 所屬分類: Others

    主站蜘蛛池模板: 伊人久久亚洲综合| 亚洲欧美日韩国产成人| 一级做a爰片久久毛片免费看 | 97在线线免费观看视频在线观看| 一本久久a久久精品亚洲| 国产精品1024在线永久免费 | 久久夜色精品国产噜噜噜亚洲AV| 三年片免费观看大全国语| 亚洲人成在线播放网站| 三年片在线观看免费西瓜视频| 亚洲桃色AV无码| 免费视频精品一区二区三区| 亚洲国产一区在线| 91在线视频免费91| 国产在亚洲线视频观看| a级毛片毛片免费观看久潮| 亚洲桃色AV无码| 免费女人高潮流视频在线观看| 亚洲经典在线观看| 无码国产精品一区二区免费式影视 | 免费av一区二区三区| 亚洲视频中文字幕| 国产免费看JIZZ视频| 亚洲av无码av在线播放| 亚洲精品视频在线观看你懂的| 男女拍拍拍免费视频网站| 一区二区三区亚洲| 手机在线看永久av片免费| 粉色视频成年免费人15次| 亚洲国产综合无码一区| 114一级毛片免费| 国产AV无码专区亚洲AV琪琪| 国产亚洲精AA在线观看SEE| 91成人在线免费观看| 亚洲精品国产首次亮相| 久久精品亚洲福利| 国产无人区码卡二卡三卡免费| 羞羞视频网站免费入口| 亚洲色欲久久久综合网| 中字幕视频在线永久在线观看免费| 九九综合VA免费看|