2010-07-23 58 views

回答

0

我不認爲你可以去沒有onComplete處理程序,除非你想重寫原型AJAX API。但是,您不必直接將閉包傳遞給onComplete處理程序。

你可以做什麼是你的JavaScript代碼中創建頂層範圍的空對象:

var updates = { } ; 

現在,您將設置onComplete參數包含一個緊湊的功能,通過設置屬性爲updates對象您更新div的名稱(+日期多次更新):

function update() { 

    var divName = arguments[0] ; 
    var date = new Date() ; 

     if(updates[divName]) { //!! if there is an entry for that div fill date 
       updates[divName].push(date) ; 
     } else { //!! else create a new array with the current date 
       updates[divName] = [ date ] ; 
     } 

} 

現在,你可以通過用div的名稱檢查一個屬性的對象檢查更新:

/* code */ 
    if(updates[divName] !== null) { 
     isAlreadyUpdated() ; 
    } else { 
     isNotAlreadyUpdated() ; 
    } 
/* more code */ 

順便說一句,我不排除可能性,有可能是原型API會做同樣的事情的方法。我對原型不熟悉。

如果沒有,但我希望這會有所幫助!

FK

0

Ajax.Responders它可以讓你觀看 'AJAX事件'(在JavaScript意義上並不是真正的事件)。 API表示傳遞給回調函數的第一個參數是請求者對象,因此您可以檢查它是否爲Ajax.Updater,然後檢查它的.container.success以查找正在更新的元素ID。你可以假設它是一個onComplete事件,那麼被引用的元素將被改變。