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

首頁 > 開發 > XML > 正文

XMLHTTP對象封裝技術

2024-09-05 20:53:56
字體:
來源:轉載
供稿:網友
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,直到發生異常或完全取得responsetext。大多數情況應該使用第一種方法,因為第一種方法在發生異常時會把異常信息顯示在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').確保傳遞數據編碼格式的正確.

中國最大的web開發資源網站及技術社區,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品中文字幕在线| 欧美午夜片欧美片在线观看| 欧美综合国产精品久久丁香| 浅井舞香一区二区| 国产999精品| 亚洲国产精品人久久电影| 欧美精品videos另类日本| 亚洲精品成人久久久| xxav国产精品美女主播| 精品久久久久久国产| 日本欧美中文字幕| 日韩一区二区福利| 国产欧美日韩专区发布| 亚洲午夜国产成人av电影男同| 亚洲老头老太hd| 日韩电视剧在线观看免费网站| 亚洲最大的成人网| 久久国产一区二区三区| 亚洲国产天堂网精品网站| 欧美性感美女h网站在线观看免费| 亚洲欧美激情另类校园| 夜夜嗨av色综合久久久综合网| 欧美孕妇与黑人孕交| 久久久亚洲影院你懂的| 国产精品久久久久久久9999| 在线观看欧美日韩| 欧美亚洲成人网| 亚洲成年人影院在线| 亚洲国产精品久久精品怡红院| 欧美日韩精品国产| 久久香蕉国产线看观看av| 91精品免费久久久久久久久| 国产精品一二区| 92国产精品久久久久首页| 国产香蕉精品视频一区二区三区| 欧美日韩亚洲成人| 国语自产精品视频在免费| 国产精品美女无圣光视频| 色婷婷综合久久久久| 91黑丝高跟在线| 日韩中文字幕不卡视频| 国产成人免费91av在线| 亚洲成人精品在线| 国产精品一区av| 综合久久五月天| 日韩电影中文字幕在线观看| 久久精品视频网站| 成人h视频在线| 精品久久香蕉国产线看观看gif| 国产精品国产三级国产aⅴ浪潮| 亚洲精品美女久久久| 欧美激情免费观看| 国产成人精品视频在线观看| 国产ts一区二区| 亚洲女人被黑人巨大进入| 国产97人人超碰caoprom| 91美女高潮出水| 亚洲精品免费网站| 国产精品高精视频免费| 国模吧一区二区| 亚洲欧美国产日韩天堂区| 亚洲自拍偷拍色片视频| 久久久国产精品一区| 日韩精品有码在线观看| 国产日本欧美一区二区三区| 在线视频日本亚洲性| 久久亚洲精品一区| 欧美亚洲第一页| 4438全国成人免费| 久久久在线观看| 欧美男插女视频| 亚洲精品福利在线观看| 亚洲综合在线小说| xvideos成人免费中文版| 中文字幕精品国产| 国产福利精品av综合导导航| 精品久久久久久中文字幕| 精品免费在线观看| 色多多国产成人永久免费网站| 欧美在线国产精品| 国产精品男人的天堂| 国产精品欧美亚洲777777| 亚洲老板91色精品久久| 一本大道久久加勒比香蕉| 久久精品电影网| 日韩黄色av网站| 国产精品久久久久久影视| 精品无人区乱码1区2区3区在线| 精品久久久久久久中文字幕| 中文字幕在线成人| 国产精品电影一区| 91高清免费视频| 美女福利视频一区| 日韩av在线免费观看| 国产精品揄拍500视频| 日本人成精品视频在线| 国产精品18久久久久久首页狼| 亚洲最大中文字幕| 欧美日韩精品在线| 国产视频亚洲精品| 欧美性色xo影院| 高清亚洲成在人网站天堂| 久久久免费观看| 国语自产偷拍精品视频偷| 在线播放亚洲激情| 国产精品视频网址| 亚洲精选在线观看| 欧美日韩一区二区在线播放| 久久久国产精品x99av| 色综合色综合久久综合频道88| 成人激情视频在线播放| 蜜臀久久99精品久久久无需会员| 国产脚交av在线一区二区| 在线a欧美视频| 亚洲男人天堂2023| 国产精品永久免费视频| 欧美激情二区三区| 日韩电视剧在线观看免费网站| 国产精品大陆在线观看| 精品美女永久免费视频| 欧美午夜电影在线| 91欧美精品午夜性色福利在线| 欧美精品一二区| 亚洲第一级黄色片| 奇米四色中文综合久久| 日韩视频在线观看免费| 欧美一级在线播放| 亚洲美女黄色片| 久久久久久av| 91国产中文字幕| 性色av香蕉一区二区| 欧美日韩福利电影| 91产国在线观看动作片喷水| 国产亚洲精品成人av久久ww| 欧美丰满老妇厨房牲生活| 国产精品都在这里| 中文字幕在线视频日韩| 国产成人亚洲综合91精品| 久久综合五月天| 国产女人18毛片水18精品| 中文字幕少妇一区二区三区| 97高清免费视频| 亚洲欧美日韩国产成人| zzjj国产精品一区二区| 久久人人爽国产| 日韩中文在线观看| 亚洲淫片在线视频| 久久这里只有精品视频首页| 色偷偷888欧美精品久久久| 久久精品国产一区二区三区| 国产精品美女免费看| 亚洲自拍中文字幕| 97视频在线观看成人| 中文在线不卡视频| 久久久久久成人精品| 成人激情视频免费在线| 久久久亚洲影院你懂的| 成人黄色免费在线观看| 亚洲精品美女免费| 欧美日韩高清在线观看| 亚洲在线免费看| 国产成人精品av| 91麻豆国产语对白在线观看| 久久亚洲欧美日韩精品专区|