循环中10秒后自动调用Ajax

时间:2015-10-08 12:25:44

标签: ajax loops

jQuery:

//加载邮件     (函数loadAdmin(){

        $.ajax({
            type: 'POST',
            data: 'c_id=' + $(this).data('c_id') + '&offset=' + $(this).data('offset'), //'foo='+ bar+'&calibri='+ nolibri,
            dataType: 'json',
            url: $("#webroot").text() + 'chats/loadMsg',
            success: function (data) {
                var id = 0;
                $.each(data, function (i, item) {
                    if (item.Chat.status == 'active') {
                        $('.temp_msg').remove();
                    }
                    if (!$('#' + item.Chat.id)[0]) {
                        if (item.Chat.admin_message) {
                            $('<div class="msg_a" id="' + item.Chat.id + '">' + item.Chat.admin_message + '</div>').insertBefore('.' + $(this).data('c_id') + ' .msg_push');
                        }
                        if (item.Chat.client_message) {
                            $('<div class="msg_b" id="' + item.Chat.id + '">' + item.Chat.client_message + '</div>').insertBefore('.' + $(this).data('c_id') + ' .msg_push');
                        }
                        $('.msg_body').scrollTop($('.msg_body')[0].scrollHeight);
                    }
                    id = item.Chat.id;
                });
                $('.' + c_id + ' .msg_head').data('offset', id)
            },
            complete: function () {
                // Schedule the next request when the current one's complete
                setTimeout(loadAdmin, 10000);
            }
        });

})();
// END load message

我静态设置了c_id。这很好用。但我想对所有激活的类执行相同的操作。

这是这样的:

$('.activated').each(function () {
    // do ajax call
loadAdmin();

});

这里关键的情况是第一次迭代开始递归loadAdmin();函数调用,然后再次开始第一次迭代,从不升级到第二次迭代。我怎样才能满足我的情况。谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用setInterval()函数来完成您的要求。

像这样:

$('.activated').each(function () {
    // do ajax call
      setInterval(loadAdmin(), 10000); // This will call this function in every 10 sec

});

试试这个。我希望你能找到它。