Prototype使用指南之a(chǎn)jax
Prototype中的ajax.js提供了一個(gè)非常好用的ajax框架,一般應(yīng)用中簡(jiǎn)單的調(diào)用以下代碼就可以了
new Ajax.Request(
url, {method: “get”,
onSuccess: showFilter,
onFailure: function(request){alert(”Server error!”)},
onException: showError}
);
這個(gè)框架中提供了如下的對(duì)象和方法等:
Ajax對(duì)象:
只有一個(gè)getTransport方法,返回一個(gè)XMLHttpRequest對(duì)象,另外有一個(gè)activeRequestCount屬性,反映當(dāng)前正在處理的ajax數(shù)量
Ajax.Responders對(duì)象:
繼承自Enumerable,管理全局Ajax的請(qǐng)求,具有如下方法
register(responder):注冊(cè)一個(gè)管理ajax請(qǐng)求的對(duì)象
unregister(responder):撤銷一個(gè)管理ajax請(qǐng)求的對(duì)象
dispatch(callback, request, transport, json):觸發(fā)注冊(cè)的處理對(duì)象的方法
這個(gè)對(duì)象一般很少使用,系統(tǒng)中已經(jīng)使用如下的代碼注冊(cè)了一個(gè)處理對(duì)象
Ajax.Responders.register({
onCreate: function() {
Ajax.activeRequestCount++;
},
onComplete: function() {
Ajax.activeRequestCount–;
}
});
Ajax.Base類:
Ajax的基類, 只有一個(gè)方法setOptions(options), 默認(rèn)request參數(shù)如下,你可以在新建Ajax.request時(shí)指定:
method: ‘post',
asynchronous: true,
contentType: ‘a(chǎn)pplication/x-www-form-urlencoded',
encoding: ‘UTF-8′,
Ajax.Request類:
ajax主要的類,繼承自ajax.base類,客戶端使用 new Ajax.Request(url,options) 調(diào)用,options是一個(gè)對(duì)象(關(guān)聯(lián)數(shù)組), 在options中可以指定method,asynchronous,contentType,encoding,parameters, postBody,username,password等選項(xiàng),其中parameters可以是字符傳或者關(guān)聯(lián)數(shù)組象,
另外在options中還可以通過requestHeaders指定request heads,其中requestHeaders可以是數(shù)組(例如[”Connection”,”Close”,”aheadkey”,”aheadvalue”])或一個(gè)關(guān)聯(lián)數(shù)組;
options中最重要的選項(xiàng)就是指定ajax的回調(diào)方法,可以定義onComplete, onSuccess, onFailure, onException(執(zhí)行過程中發(fā)生異常調(diào)用的方法,主要為onComplete, onSuccess, onFailure等回調(diào)方法產(chǎn)生的),甚至可以定義on404,on503這樣的回調(diào)方法,它們的參數(shù)為(transport, json),其中transport為請(qǐng)求的XMLHttpRequest對(duì)象, json是evalJSON的結(jié)果
如果返回的是一個(gè)javascript文件(根據(jù)返回的Content-type頭判斷)將會(huì)執(zhí)行evalResponse方法,另外Ajax.Request對(duì)象還有一個(gè)evalJSON方法,取得文件的時(shí)候就會(huì)執(zhí)行
這個(gè)對(duì)象的方法列表如下:
request(url) : 發(fā)送請(qǐng)求,new的時(shí)候就已經(jīng)調(diào)用了,所以一般不需要使用
success(): 判斷request是否成功了
getHeader(name):根據(jù)name得到request head
evalJSON(): 執(zhí)行g(shù)etHeader(”X-JSON”),并返回結(jié)果
evalResponse(): 執(zhí)行返回的responseText并返回
Ajax.Updater類:
繼承自Ajax.Request,只是比Ajax.Request增加了更新html元素的功能,一般使用方法是new Ajax.Updater(element, url, options), element可以是一個(gè)元素,也可以是{success:e1,failure:e2}這種形式,
默認(rèn)情況下不會(huì)執(zhí)行返回結(jié)果中的javascript,如果你先執(zhí)行,你可以指定options中的evalScripts為true
默認(rèn)情況下是替換指定元素的內(nèi)容,如果你希望是添加,可以指定options的insertion參數(shù), insertion是一個(gè)Insertion.Before、Insertion.Top或Insertion.Bottom、 Insertion.After(將在dom.js中介紹)
Ajax.PeriodicalUpdater類:
繼承自Ajax.Base,周期性的更新一個(gè)html元素的內(nèi)容,這個(gè)類會(huì)調(diào)用Ajax.Updater對(duì)html元素進(jìn)行周期性的更新,使用方法 為new Ajax.PeriodicalUpdater(container, url, options), 參數(shù)跟Ajax.Updater差不多,其中options可以設(shè)置frequency(默認(rèn)為2),decay,decay指的是當(dāng)請(qǐng)求的內(nèi)容沒有變化 的時(shí)候,frequency需要延長(zhǎng)的倍數(shù),默認(rèn)是1,例如如果decay設(shè)為2,frequency設(shè)為3而內(nèi)容一直沒有變化,則請(qǐng)求的時(shí)間依次會(huì)變?yōu)?3,6,12,24等
start(): 開始更新, 初始化的時(shí)候會(huì)自動(dòng)調(diào)用
stop(): 停止更新
相關(guān)文章
[轉(zhuǎn)]prototype 源碼解讀 超強(qiáng)推薦
[轉(zhuǎn)]prototype 源碼解讀 超強(qiáng)推薦...2007-02-02初學(xué)prototype,發(fā)個(gè)JS接受URL參數(shù)的代碼
初學(xué)prototype,發(fā)個(gè)JS接受URL參數(shù)的代碼...2006-09-09Prototype源碼淺析 String部分(一)之有關(guān)indexOf優(yōu)化
Prototype源碼淺析 String部分(一)之有關(guān)indexOf優(yōu)化介紹,需要的朋友可以參考下。2012-01-01Prototype的Class.create函數(shù)解析
Prototype中的類的創(chuàng)建,一般使用Class.create方法來創(chuàng)建,例如PeriodicalExecuter類型。使用的時(shí)候通過調(diào)用new PeriodicalExecuter(xxx)來生成對(duì)象。2011-09-09Prototype Class對(duì)象學(xué)習(xí)
Prototype’s object for class-based OOP.prototype OOP編程的基礎(chǔ),詳細(xì)說明一下源碼2009-07-07Prototype Function對(duì)象 學(xué)習(xí)
這個(gè)對(duì)象就是對(duì)function的一些擴(kuò)充,最重要的當(dāng)屬bind方法,其中wrap方法也很重要,在類繼承機(jī)制里面就是利用wrap方法來調(diào)用父類的同名方法。2009-07-07