使用数据表进行Ajax轮询

时间:2016-08-29 14:36:54

标签: javascript php jquery ajax-polling

描述: -

我有一个应用程序从表中获取30个数据并将其显示在数据表中。它在DT中每页显示10个。

现在,每一行都有三个要素: -

<a href="javascript:void(0)" onclick="push_notification('<?php echo $entity;?>','<?php echo $id;?>')" title="Push Notification">
    <img src="<?php echo(base_url())?>assets/images/icon/arrow_right.png" width="22" height="22" border="0" alt="Push Notification" onload="chat_review('<?php echo $id;?>')"/></a>
<a href="<?php echo base_url();?>admin/<?php echo $entity;?>/<?php echo $entity;?>_chat/<?php echo $id;?>" title="Chat">
    <div class="ch_comment" id="chatReviewDiv_<?php echo $id;?>"><?php if($row['chat_count']>0){?><div class="notify"><?php echo $row['chat_count'];?></div><?php }?></div>
</a>

如您所见,标签有一个onload事件,它调用此函数: -

function chat_review(post_id)
{
    if($('#table tr').length > 1 && $('td[colspan]').not('[colspan=1]'))
    {
        $.post('<?php echo base_url();?>ajax-function', 
            {'data':'chat',
             'id': post_id,
             'action': 'count'},
            function(data) {
            $("#chatReviewDiv_"+data.id).empty();
                if(data.chatCount > 0)
                {
                    $("#chatReviewDiv_"+data.id).append("<div class='notify'>"+data.chatCount+"</div>");
                }
                setTimeout(function(){
                chat_review(data.id)
            },25000);
        }, 'json');
    }
}

这实际上是服务器轮询,每25秒检查一次。此功能的目的是检查是否已收到此帖子的新消息。

现在,由于datatable使用所有数据加载表,但只是在页面中显示它们,100个数据意味着将调用此函数100次。因此,有时浏览器也变得没有响应。

有没有解决方案可以解决这个问题?

0 个答案:

没有答案