2011-06-24 27 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')); 
    } 
});