2011-06-24 49 views
0
<script> 

//when page is ready do the following 
$(document).ready(function() 
{ 
    //set interval of refresh 
    setInterval(doAjaxMethod, 1000); 

}); 

function doAjaxMethod(id) 
{ 
    $.ajax({ 
     url: "getStatus/"+id, 
     dataType: "json", 
     success: function(json) 
     { 
      $('#ajaxStatus').html(json.status); 
     }  
}); 
</script> 

<% 
    //How can I do something like this 

    int n = object.size(); 

    for(int i=0; i<n; i++) 
    { 
     doAjaxMethod(object.getId()); 
    } 
%> 

<div id=ajaxStatus> status updates here </div> 
+2

你想的AJAX事件,每隔幾秒鐘或什麼火?請在這方面澄清你的問題。 – Bojangles

回答

3

我不會在scriplets中混合調用javascript。相反,在JavaScript中管理循環。如果你更多地描述你想要做的事情,我可以更具體一些。看起來你在jsp上有一個容器對象,你需要循環直到獲取容器中的狀態。爲什麼不創建jsp上的javascript可以在ajax中調用的端點來獲取所需的所有數據,而不是將該對象傳遞給jsp。

0

試試這個(假設objArray是一個數組):

$.each(objArray, function(i, obj) { 
     doAjaxMethod(obj.getId()); 
}); 

它會遍歷你的陣列和obj是每一個項目。 希望它有幫助。

2

你可以做的一種方法是將它們添加到像css類的對象列表中,並觸發其上的ajax方法onLoad。 下面是一些未經檢驗的(可能未編譯)

<% 
    //How can I do something like this 

    int n = object.size(); 

    for(int i=0; i<n; i++) 
    { 
     out.println("<li class='abcd' id ='<%=object.getId()%>'>" +object.getId() +"</li>"); 
    } 
%> 

,然後在頁面加載的JavaScript

$(function(){ 
    $('.abc').each(i, v){ 
       doAjaxMethod($(v).attr('id')); 
    } 
});