Prototype使用指南之ajax

來源:互聯網
上載者:User

Prototype中的ajax.js提供了一個非常好用的ajax架構,一般應用中簡單的調用以下代碼就可以了

new Ajax.Request(
url, {method: “get”,
onSuccess: showFilter,
onFailure: function(request){alert(”Server error!”)},
onException: showError}
);

這個架構中提供了如下的對象和方法等:

Ajax對象:

只有一個getTransport方法,返回一個XMLHttpRequest對象,另外有一個activeRequestCount屬性,反映當前正在處理的ajax數量

Ajax.Responders對象:

繼承自Enumerable,管理全域Ajax的請求,具有如下方法
register(responder):註冊一個管理ajax請求的對象
unregister(responder):撤銷一個管理ajax請求的對象
dispatch(callback, request, transport, json):觸發註冊的處理對象的方法

這個對象一般很少使用,系統中已經使用如下的代碼註冊了一個處理對象

Ajax.Responders.register({
onCreate: function() {
Ajax.activeRequestCount++;
},
onComplete: function() {
Ajax.activeRequestCount–;
}
});

Ajax.Base類:

Ajax的基類, 只有一個方法setOptions(options), 預設request參數如下,你可以在建立Ajax.request時指定:

method: ‘post',
asynchronous: true,
contentType: ‘application/x-www-form-urlencoded',
encoding: ‘UTF-8′,

Ajax.Request類:

ajax主要的類,繼承自ajax.base類,用戶端使用 new Ajax.Request(url,options) 調用,options是一個對象(關聯陣列), 在options中可以指定method,asynchronous,contentType,encoding,parameters, postBody,username,password等選項,其中parameters可以是字元傳或者關聯陣列象,

另外在options中還可以通過requestHeaders指定request heads,其中requestHeaders可以是數組(例如[”Connection”,”Close”,”aheadkey”,”aheadvalue”])或一個關聯陣列;

options中最重要的選項就是指定ajax的回調方法,可以定義onComplete, onSuccess, onFailure, onException(執行過程中發生異常調用的方法,主要為onComplete, onSuccess, onFailure等回調方法產生的),甚至可以定義on404,on503這樣的回調方法,它們的參數為(transport, json),其中transport為請求的XMLHttpRequest對象, json是evalJSON的結果

如果返回的是一個javascript檔案(根據返回的Content-type頭判斷)將會執行evalResponse方法,另外Ajax.Request對象還有一個evalJSON方法,取得檔案的時候就會執行

這個對象的方法列表如下:
request(url) : 發送請求,new的時候就已經調用了,所以一般不需要使用
success(): 判斷request是否成功了
getHeader(name):根據name得到request head
evalJSON(): 執行getHeader(”X-JSON”),並返回結果
evalResponse(): 執行返回的responseText並返回

Ajax.Updater類:

繼承自Ajax.Request,只是比Ajax.Request增加了更新html元素的功能,一般使用方法是new Ajax.Updater(element, url, options), element可以是一個元素,也可以是{success:e1,failure:e2}這種形式,

預設情況下不會執行返回結果中的javascript,如果你先執行,你可以指定options中的evalScripts為true

預設情況下是替換指定元素的內容,如果你希望是添加,可以指定options的insertion參數, insertion是一個Insertion.Before、Insertion.Top或Insertion.Bottom、 Insertion.After(將在dom.js中介紹)

Ajax.PeriodicalUpdater類:

繼承自Ajax.Base,周期性的更新一個html元素的內容,這個類會調用Ajax.Updater對html元素進行周期性的更新,使用方法 為new Ajax.PeriodicalUpdater(container, url, options), 參數跟Ajax.Updater差不多,其中options可以設定frequency(預設為2),decay,decay指的是當請求的內容沒有變化 的時候,frequency需要延長的倍數,預設是1,例如如果decay設為2,frequency設為3而內容一直沒有變化,則請求的時間依次會變為 3,6,12,24等

start(): 開始更新, 初始化的時候會自動調用
stop(): 停止更新

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.