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

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

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

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    ajax技術基礎

    ajax技術是采用javascript作為客戶端實現的語言,xml作為其通訊的機制,因此有人將ajax描述為:ajax=javascript+xml是很有道理的.ajax的最大優點就是異步處理,相對于以往的web技術采用的請求全刷新機制,它更加親近于C/S結構的軟件,給用戶的是一種很有快感的東東.其實現的方式是采用一個叫做XMLHttpRequest的對象進行交互的,因為歷史的原因,各種瀏覽器對javascript的處理方式不一致,使得生成XMLHttpRequest對象的方法也有差別,但大體上有兩種方式:微軟的ActiveX控件和XMLHttpRequest本地對象,代碼如下:
    ?1function?createXMLHttpRequest()?{
    ?2??var?xmlreq?;
    ?3??if?(window.XMLHttpRequest)?{
    ?4????//?在非Microsoft瀏覽器中創建XMLHttpRequest本地對象
    ?5????xmlreq?=?new?XMLHttpRequest();
    ?6??}
    ?else?if?(window.ActiveXObject)?{
    ?7????//通過MS?ActiveX創建XMLHttpRequest
    ?8????try?{
    ?9??????//?嘗試按新版InternetExplorer方法創建
    10??????xmlreq?=?new?ActiveXObject("Msxml2.XMLHTTP");
    11????}
    ?catch?(e1)?{
    12??????//?創建請求的ActiveX對象失敗
    13??????try?{
    14????????//?嘗試按老版InternetExplorer方法創建
    15????????xmlreq?=?new?ActiveXObject("Microsoft.XMLHTTP");
    16??????}
    ?catch?(e2)?{
    17????????//?不能通過ActiveX創建XMLHttpRequest
    18??????}

    19????}

    20??}

    21??return?xmlreq;
    22}

    23
    代碼中看到排除上述的兩種情況,方法createXMLHttpRequest得到的結果將是null,也就是說無法得到XMLHttpRequest的實例,也就無法使用ajax技術。但書中一直沒有給出此時將如何處理,難道,世界上的瀏覽器就他們兩種?或者,對于那些第三類的用戶,我們要么勸勉其使用Internet Explorer或firefox等,要么對其采取拋棄的態度(這些也許是世界規范化組織該考慮的問題)。創建了XMLHttpRequest實例之后就采用類似于java(awt)中的事件處理機制,如下代碼:
    ?1function?myFunction(){
    ?2????//?獲取一個XMLHttpRequest實例
    ?3????var?req?=?createXMLHttpRequest();
    ?4????//?設置用來從請求對象接收回調通知的句柄函數
    ?5????req.onreadystatechange?=handlerFunction(req);
    ?6????//?HTTP?POST聯接,第三個參數表示請求是異步的
    ?7????req.open("POST",?"handleRequest.action",?true);
    ?8????//?指示請求體包含form數據
    ?9????req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    10????req.send(null);
    11}
    其中req.onreadystatechange引用的類似C++中的函數的指針,即handlerFunction,其代碼如下:
    ?1function?handlerFunction(req){
    ?2????//?如果請求的狀態是“完成”
    ?3????if?(req.readyState?==?4){
    ?4????????//?檢查是否成功接收了服務器響應
    ?5????????if?(req.status?==?200){
    ?6????????????//?處理事件,這里省略
    ?7????????????
    ?8????????}

    ?9????????else{
    10????????????//?有HTTP問題發生
    11????????????alert("HTTP?error:?"+req.status);
    12????????}

    13????}

    14}
    與頁面的交互,可能是這樣的一個事實,用戶點擊某個按鈕,激發myFunction方法的執行,此方法將創造一個XMLHttpRequet實例,并將處理事件的機制委托給onreadystatechange所指定的方法(本文中即為:handlerFunction)監聽,handlerFunction將判斷傳進來的XMLHttpRequet實例的運行狀態,對應其狀態實現相應的業務邏輯。
      上面沒有列出ajax的xml通信機制,這里簡要的說明一下:
      發信:通過串的連接構造出一個滿足xml格式的字符串,如String s="<project><person><name>"+"passyt"+"<\/name><\/person><\/project>";然后通過XMLHttpRequet實例req的send傳送到服務器端,如req.send(s);
    ??????? 收信:通過req.responseXML得到所謂的Dom實例然后按照標準的文檔對象模型的方法取值顯示到頁面。
    ??? 說明:在發信中,xml消息的構成通過字符串的連接完成,很容易因為筆誤而產生錯誤,?ajax基礎教程?一書給出了另一種基于簡單通信的消息格式json,網上有其免費的版本和詳細說明,這里不再敷言。
      服務器端獲取xml的信息格式后做相關的業務處理,然后生成xml消息返回給客戶端,客戶端利用javascript中的dom支持訪問所在的xhtml,進行頁面的局部刷新。這里的服務器端技術可以是java,php或者是.net,總之只要是支持xml通信機制的服務器技術都可以。
      利用ajax技術可以創造出類似桌面軟件的web頁面,顯得與眾不同,因而顯得特別酷,又加之google的推廣以及幾個大型網站的宣傳,ajax就作為一種“新瓶裝老酒”的“新技術”出現在我們的生活中,并激起了所謂的web2.0熱潮。但顯而易見的是,ajax的編碼量很可能大大的超出了其他的頁面表現技術,而作為一種弱類型語言無法得到對應的自動代碼產生工具,對于我們程序員而言是極其痛苦的,另外它也帶來了很大的安全隱患,因為其代碼可見性,使得編寫頁面的javascript腳本將對程序員做出更高的要求。
      但是,好的是,現在已經有越來越多的ajax框架來減少javascript對瀏覽器的依賴以及提高ajax的開發效率。?ajax基礎教程?一書就給出了一個框架

    posted on 2006-05-26 10:19 liaojiyong 閱讀(467) 評論(1)  編輯  收藏 所屬分類: Ajax

    評論

    # re: ajax技術基礎 2006-11-15 17:31 www

    good  回復  更多評論   

    主站蜘蛛池模板: 日本免费A级毛一片| xxxxx做受大片视频免费| 免费人成视网站在线观看不卡| 亚洲高清免费视频| 亚洲久悠悠色悠在线播放| 国产亚洲3p无码一区二区| 韩国18福利视频免费观看| 一级毛片不卡片免费观看| 免费激情网站国产高清第一页 | 亚洲三级高清免费| 人人狠狠综合久久亚洲88| 免费看AV毛片一区二区三区| 久久精品免费一区二区| 99re在线这里只有精品免费| 中文字幕免费观看视频| 国产99久久久国产精免费 | 免费观看的a级毛片的网站| 亚洲精品在线免费观看视频| 香蕉成人免费看片视频app下载| a在线视频免费观看在线视频三区| 亚洲精品一卡2卡3卡四卡乱码| 亚洲人成网站在线观看播放青青| 亚洲精品资源在线| 亚洲中文字幕乱码一区| 亚洲人成综合网站7777香蕉| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | 日本免费大黄在线观看| 欧洲人免费视频网站在线| 8x8×在线永久免费视频| 每天更新的免费av片在线观看 | 亚洲精品无码永久在线观看你懂的 | 精品亚洲一区二区三区在线播放 | 成全视频免费观看在线看| 中文字幕免费不卡二区| 在线观看AV片永久免费| 免费一看一级毛片| 亚洲综合一区二区精品导航| 亚洲国语在线视频手机在线| 2020天堂在线亚洲精品专区| 无人视频免费观看免费视频| 久久免费公开视频|