亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

XMLHTTP對象封裝技術

2019-11-18 16:41:34
字體:
來源:轉載
供稿:網友

    Ajax技術的實現主要依賴于xmlhttPRequest,但我們在調用其來進行異步數據的傳輸時,由于xmlhttp是個短線過程(處理事件完成后就銷毀)如果不對該對象進行包裝處理的話,就不得不在需要調用的地方重新構建xmlhttprequest,每次調用都要寫一大段的代碼,實在不是個好辦法。好在現在很多開源的ajax框架都提供了對xmlhttp封裝的方案。這里以ajaxtags自帶的prototype-1.4.0.js為母版,來看看如何將xmlhttp對象封裝成一個可復用的方法。

    在prototype.js中,首先定義了一個變量:Ajax
   var Ajax = {
      getTransport: function() {
        return Try.these(
          function() {return new ActiveXObject('Msxml2.XMLHTTP')},
          function() {return new ActiveXObject('Microsoft.XMLHTTP')},
          function() {return new XMLHttpRequest()}
      ) || false;
   },

    activeRequestCount: 0
}
變量返回了一個xmlhttprequest,可以看到,如果我們調用了Ajax.getTransport(),每次都會返回一個新的xmlhttprequest對象。
   在Ajax變量中定義了一個基礎方法Ajax.Base和該基礎方法的原型(初始時,每個腳本方法默認都有個空的原型,該原型會繼承Object的原型,如果我們在Object中改變了原型,則所有的腳本方法都會被改變。) 該基礎方法被Ajax.Request所繼承,注意的是,如果在Ajax.Request中填充了繼承的原型的同名方法或變量,則會實現重載。
    Ajax.Base原型中最主要的是setOptions方法,過會我們就會用到。
setOptions: function(options) {
    this.options = {
      method:       'post',
      asynchronous: true,
      parameters:   ''
    }
   prototype中對request是通過定義Ajax.Request原型(Ajax.Request.prototype)來實現的。但我們并不能直接對Ajax.Request進行調用,主要原因是Ajax.Request并沒有提供一個統一處理的過程。而且我們可能需要通過request 再取得response。(試想一下,客戶那邊發出一條信息,都始終沒與收到回復,那是會讓人覺得很惱火的事~),prototype同樣為我們封裝好了resoponse(Ajax.Responders),但兩者都是相互獨立的,如何把他們進行整合呢?

    在 prototype中給我們提供了兩個方案,一個是Ajax.Updater,另一個是Ajax.PeriodicalUpdater,兩個共同點都是必須傳入3個參數:
container:
    response數據要傳達的位置,該位置通過html標簽的id進行定義,比如你要把返回的數據輸出到html中的某個<div>中,則只要把container改成該id的值就可以了。如果找不到該container,則會發生腳本錯誤。
url:
    request請求要傳遞的目的地。該目的地應該是個servlet或jspservlet,因為request對象只能被servlet中的do***方法自動獲取。
options:
    結構應該與上面Ajax.Base定義的setOptions()中的option結構相同,如果為空或不寫,則采用 Ajax.Base定義的初始值(沒有傳遞任何參數時使用)。
    兩者的區別在與Ajax.Updater返回給container的是完整的responseText,只有在responseText完全取得又沒發生異常時才會把內容寫到container里面,而PeriodicalUpdater在獲取responseText時,不管是否已經完整取得,就把內容填進container,直到發生異?;蛲耆〉胷esponseText。大多數情況應該使用第一種方法,因為第一種方法在發生異常時會把異常信息顯示在container里面,而第二種就不一定了。
    既然已經把xmlhttp封裝好了,我們只需要設置好前面所說的3個參數就可以了,要注意的是,設置options參數,一定要按照base中的options結構進行設置,如果我們使用post方法,還可以在opitons中設置postBody屬性,把要傳遞的queryString 放到body中,一個使用post方法進行傳遞的腳本例子如下:

 

 /*表單提交用post方法*/
 function doRequest(container,paraments,url){
    var options ={
      method:       'post',
      asynchronous: true,
      postBody: paraments
    };
    new Ajax.Updater(container,url,options);   
 }

最后不得不說的是中文編碼問題,prototype對傳遞的參數都進行了編碼轉換工作,每個傳遞值通過encodeURIComponent 進行了處理.編碼會被轉換成utf-8,在后臺獲取request時,應該統一使用request.setCharacterEncoding("UTF-8")對request設置編碼,而不必管頁面的編碼格式是什么.如果使用post方法進行傳遞數據,則會自動執行:
    request.setHeader('Content-type','application/x-www-form-urlencoded').確保傳遞數據編碼格式的正確.

http://blog.csdn.net/lemonfamily/archive/2007/01/30/1498248.aspx


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人在线免费观看视视频| 亚洲第一精品电影| 狠狠色狠狠色综合日日五| 欧美激情乱人伦一区| 日韩在线免费高清视频| 欧美限制级电影在线观看| 正在播放亚洲1区| 92福利视频午夜1000合集在线观看| 欧美性受xxxx白人性爽| 国产精品激情自拍| 国产精品黄色影片导航在线观看| 久久精品视频网站| 成人激情在线播放| 国产精品久久久久久中文字| 日韩欧美在线观看视频| 一区二区福利视频| 欧洲中文字幕国产精品| 91av在线免费观看| 国产91精品网站| 成人乱人伦精品视频在线观看| 中文字幕av一区| 国产视频在线一区二区| 国产亚洲精品高潮| 亚洲精品电影在线观看| 成人看片人aa| 欧美视频在线视频| 日韩av片永久免费网站| 亚洲视频axxx| 中文字幕日韩精品在线| 欧美xxxx综合视频| 久久91超碰青草是什么| 日韩在线中文字| 日韩中文字幕在线精品| 浅井舞香一区二区| 欧美视频不卡中文| 欧美性色19p| 黑人极品videos精品欧美裸| 亚洲激情国产精品| 欧美激情视频免费观看| 中文字幕精品在线| 国产一区二区三区毛片| 国产视频精品免费播放| 欧美精品第一页在线播放| 欧美激情一级精品国产| 久久视频在线免费观看| 欧美日韩加勒比精品一区| 亚洲精品日产aⅴ| 国产成人自拍视频在线观看| 国内外成人免费激情在线视频网站| 欧美日韩在线看| 91wwwcom在线观看| 国产99久久精品一区二区永久免费| 午夜精品理论片| 久久国产一区二区三区| 中文字幕亚洲二区| 亚洲欧美日韩一区在线| 97视频在线观看播放| 日韩久久精品成人| 97av视频在线| 欧美在线精品免播放器视频| 国产高清视频一区三区| 成人妇女免费播放久久久| 日韩高清欧美高清| 国产精品国产亚洲伊人久久| 91成人在线观看国产| 日韩欧美亚洲范冰冰与中字| 欧美另类暴力丝袜| 亚洲国产又黄又爽女人高潮的| 亚洲色图35p| 国产精品免费小视频| www.亚洲人.com| 国内精品一区二区三区| 亚洲成人黄色网| 日韩激情视频在线| 91爱爱小视频k| 亚洲欧美日韩第一区| 91在线视频免费| 色悠悠久久88| 色先锋久久影院av| 亚洲欧洲国产精品| 亚洲综合成人婷婷小说| 亚洲无限av看| 国产91在线高潮白浆在线观看| 国产精品入口夜色视频大尺度| 91久久精品国产| 欧美成在线视频| 国产欧美精品久久久| 91av在线看| 亚洲第一区中文字幕| 姬川优奈aav一区二区| 久久久国产一区二区三区| 国产成人精品电影久久久| 日韩亚洲欧美成人| 91成人在线视频| 欧美电影院免费观看| 亚洲欧美另类人妖| 欧美成人全部免费| 色悠悠国产精品| 久久免费视频在线| 欧美激情a∨在线视频播放| yellow中文字幕久久| 国产色综合天天综合网| 一区二区亚洲精品国产| 亚洲一区第一页| 亚洲欧美在线一区二区| 亚洲欧美日韩高清| 欧美在线一级va免费观看| 亚洲一区二区三区乱码aⅴ| 911国产网站尤物在线观看| 欧美小视频在线| 在线观看国产精品淫| 亚洲精品一区二区网址| 欧美日韩性视频在线| 欧美国产日韩xxxxx| 欧美午夜激情视频| 亚洲成人激情小说| 国产视频丨精品|在线观看| 欧美激情网友自拍| 欧美孕妇与黑人孕交| 欧美精品一本久久男人的天堂| 亚洲男人的天堂在线| 最近2019年中文视频免费在线观看| 国产午夜精品免费一区二区三区| 51精品在线观看| 97香蕉久久超级碰碰高清版| 国产亚洲精品日韩| 国产日本欧美在线观看| 日韩在线观看成人| 69av视频在线播放| 国产精品草莓在线免费观看| 亚洲free性xxxx护士白浆| 亚洲美女av在线| 久久精品一区中文字幕| 91久久精品国产91久久| 主播福利视频一区| 精品亚洲va在线va天堂资源站| 成人动漫网站在线观看| 久久免费福利视频| 欧美日韩国产在线| 国产成人精品a视频一区www| 国产精品狠色婷| 国产精品一区二区三| 亚洲精品美女在线观看| 欧美劲爆第一页| 日韩在线视频免费观看| 国产精品久久久久久亚洲调教| 欧美人交a欧美精品| www日韩中文字幕在线看| 夜夜狂射影院欧美极品| 欧美日韩国产成人在线观看| 亚洲综合一区二区不卡| 一本一道久久a久久精品逆3p| 狠狠色狠狠色综合日日五| 亚洲人午夜色婷婷| 国模gogo一区二区大胆私拍| 在线日韩欧美视频| 日韩天堂在线视频| 亚洲一区二区精品| 亚洲福利在线看| 成人免费看吃奶视频网站| 91在线网站视频| 欧美久久精品午夜青青大伊人| 日韩精品亚洲元码| 91免费看视频.|