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

首頁 > 開發 > XML > 正文

XMLHTTP對象封裝技術

2024-09-05 20:53:57
字體:
來源:轉載
供稿:網友
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').確保傳遞數據編碼格式的正確.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久最新网址| 中文字幕国产精品| 精品美女久久久久久免费| 国产视频观看一区| 欧美性jizz18性欧美| 日韩免费黄色av| 日韩成人激情在线| 在线观看中文字幕亚洲| 日韩欧美中文字幕在线观看| 欧美日本在线视频中文字字幕| 欧美日韩一区免费| 日韩成人在线免费观看| 亚洲美女视频网站| 欧美黄色片视频| 亚洲国产欧美在线成人app| 97成人精品视频在线观看| 日韩在线视频二区| 欧美中文字幕在线播放| 色综合伊人色综合网| 欧美精品一区二区免费| 国产亚洲精品久久久久久777| 亚洲女人被黑人巨大进入al| 欧美高清视频在线播放| 日韩av影片在线观看| 秋霞av国产精品一区| 欧美成人午夜激情视频| 97精品国产97久久久久久春色| 91在线观看免费观看| 在线播放亚洲激情| 午夜精品一区二区三区在线| 91在线精品播放| 成人动漫网站在线观看| 综合国产在线视频| 久久成人免费视频| 成人高h视频在线| 国产精品久久久久久久久久新婚| 日本一区二区在线播放| 国产精品一区二区三区成人| 一本大道香蕉久在线播放29| 亚洲一区二区三区在线免费观看| 孩xxxx性bbbb欧美| 亚洲片av在线| 亚洲欧美国内爽妇网| 国产啪精品视频网站| 自拍偷拍亚洲欧美| 亚洲人成毛片在线播放| 亚洲视频视频在线| 日本伊人精品一区二区三区介绍| 久久久久久综合网天天| 在线视频欧美性高潮| 国模吧一区二区三区| 国内精品久久久久久中文字幕| 久久中文字幕国产| 国产精品第100页| 俺去亚洲欧洲欧美日韩| 插插插亚洲综合网| 成人a视频在线观看| 亚洲欧美视频在线| 欧美精品日韩www.p站| 久久综合国产精品台湾中文娱乐网| 亚洲视频欧美视频| 日本亚洲欧美三级| 国产免费成人av| 欧美日韩一区二区三区在线免费观看| xvideos成人免费中文版| 亚洲色图五月天| 国产精品一区二区三区毛片淫片| 国产精品青青在线观看爽香蕉| 国产成人精品一区二区三区| 日韩欧美在线视频日韩欧美在线视频| 91青草视频久久| 最近2019中文字幕在线高清| 2019亚洲男人天堂| 国产91在线播放精品91| 精品久久久久久国产| 午夜精品久久久久久久久久久久久| 国产偷国产偷亚洲清高网站| 久久久久国产一区二区三区| 91精品国产综合久久久久久蜜臀| 亚洲国产精彩中文乱码av| 欧美亚洲伦理www| 国产一区二区动漫| 国产精品久久色| 久久电影一区二区| 久久视频这里只有精品| 亚洲白拍色综合图区| 亚洲在线观看视频| 欧美日本黄视频| 国内精品久久久久久中文字幕| 亚洲天天在线日亚洲洲精| 成人h猎奇视频网站| 久久这里有精品| 2019日本中文字幕| 欧美色道久久88综合亚洲精品| 91av福利视频| 久久这里只有精品视频首页| 一区二区三区亚洲| 亚洲国产成人在线视频| 性色av一区二区三区红粉影视| 国产99久久精品一区二区永久免费| 国产成人精品日本亚洲专区61| 亚洲伊人成综合成人网| 日日摸夜夜添一区| 91精品在线观看视频| 最近的2019中文字幕免费一页| 日韩欧美福利视频| 日韩中文字幕在线视频| 亚洲高清不卡av| 亚洲精品成人久久电影| 国产精品久久久久久久一区探花| 欧美高清无遮挡| 国产精品欧美在线| 69久久夜色精品国产69乱青草| 日韩欧美国产一区二区| 日韩国产高清视频在线| 欧美日韩电影在线观看| 国产精品视频26uuu| 亚洲精品按摩视频| 欧美精品在线观看| 亚洲欧美中文日韩在线| 欧美日韩成人在线播放| 日韩av男人的天堂| 久久久久在线观看| 色综合天天综合网国产成人网| 青青a在线精品免费观看| 国产精品都在这里| 欧美极品欧美精品欧美视频| 国产男人精品视频| 亚洲成色777777女色窝| 91po在线观看91精品国产性色| 欧美激情精品久久久久久久变态| 国产日韩精品在线播放| 日韩精品视频在线免费观看| 亚洲视频在线观看免费| 午夜剧场成人观在线视频免费观看| 亚洲激情视频在线| 欧美黄色片免费观看| 国产精品女人久久久久久| 欧美成年人视频网站| 亚洲性无码av在线| 欧美中文字幕在线视频| 亚洲国产精品电影| 欧美超级免费视 在线| 欧美成人亚洲成人日韩成人| 国产精品色悠悠| 久久久影视精品| 久久久久久久999| 国产精品情侣自拍| 日韩精品在线视频美女| 亚洲最大av网站| 在线观看国产精品91| 亚洲a∨日韩av高清在线观看| 91av福利视频| 亚洲日本欧美中文幕| 欧美日韩加勒比精品一区| 69久久夜色精品国产7777| 日韩在线免费视频| 日韩毛片在线观看| 在线观看视频99| 狠狠躁夜夜躁人人爽超碰91| 91日本在线观看| 欧美亚洲激情在线| 91色p视频在线| 日韩电影免费观看在线|