我如何循环ajax请求(使用jquery)和jsp

时间:2011-06-24 14:51:35

标签: javascript jquery ajax jsp

<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>

3 个答案:

答案 0 :(得分:3)

我不会在scriplets中混合调用javascript。相反,在javascript中管理循环。如果你描述了你想要做的更多,我可以更具体。看来你在jsp上有一个容器对象,你需要循环来获取容器中的内容的状态。而不是将该对象传递给jsp,为什么不创建一个端点,jsp上的javascript可以在ajax中调用以获取所需的所有数据。

答案 1 :(得分: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>");
    } 
%>

然后在jload on pageload

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

答案 2 :(得分:0)

试试这个(假设objArray是一个数组):

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

它将遍历您的数组,obj是每个项目。 希望它有所帮助。