2011-09-27 64 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') { 
     // ... 
    } 
}