2011-09-27 65 views
1

我需要在應用ajax更新後執行某個javascript函數。我試過jsf.ajax.addOnEvent(ch.ergon.newom.ajaxUpdate)到 得到有關請求的消息,但似乎在ajax響應到達後執行,但之前被應用(即:內容得到更新)。在* ajax更新後執行Javascript *

如何在JSF-ajax更新內容後執行JavaScript函數?

回答

2

其實,這將被稱爲三次。一個在發送ajax請求之前,一個在ajax響應到達之後,另一個在成功處理ajax響應之後發送。您需要根據提供的數據參數來檢查當前狀態。您可以在JSF 2.0 specification的表14-4和14-3中找到技術細節。

這裏是你的JS函數應該看起來像一個開球的例子,當你想鉤住所有3個狀態。

function ajaxUpdate(data) { 
    var ajaxStatus = data.status; // Can be 'begin', 'complete' and 'success'. 

    switch (ajaxStatus) { 
     case 'begin': // This is called right before ajax request is been sent. 
      // ... 
      break; 

     case 'complete': // This is called right after ajax response is received. 
      // ... 
      break; 

     case 'success': // This is called when ajax response is successfully processed. 
      // ... 
      break; 
    } 
} 

或者當你想勾上只有success狀態:

function ajaxUpdate(data) { 
    if (data.status == 'success') { 
     // ... 
    } 
}