2009-05-04 4 views
0

Я пытаюсь создать приложение чата с JQuery без использования SetTimeout, чтобы Минимизировать количество АЯКС запроса:Multiple Ajax вызова на той же странице

function checkChat(){  
    new jQuery.ajax({ 
     'url'  : './chat/check.php', 
     'cache' : false, 
     'success' : function(messages) { 
         if(messages.length) { 
          $("#empty_chat").append(messages); 
          //write to chat wall 
         } 
         checkChat(); 
        } 
    }); 
} 

На простой странице, которая работает прекрасно но на странице, где есть другие события ajax (например, навигация), запрос ставится в очередь и ничего не отображается до тех пор, пока сообщения пустые.

Курсор также находится в состоянии ожидания.

Есть ли способ решить это?

+0

это сделало бы больше запросов ajax, чем использование setTimeout; каждый рекурсивный вызов checkChat() будет срабатывать намного быстрее, чем setTimeout. –

ответ

0

Не совсем, если вы не хотите заглядывать в комету, вам все равно нужно будет опросить сообщения, а setTimeout - в порядке.

Рекурсия вы установили там с checkChat() вызывается рекурсивно должен быть установлен в SetTimeout или вы будете стек переполнения лол

setTimeout(checkChat,2000); 

и нужно удалить новый оператор и просто сделать

jQuery.ajax или $ .ajax

Comet and jQuery

+0

спасибо Deviant, но Comet кажутся слишком сложными для меня =) – adrien334

+0

комета не решит проблему с запросом либо – fforw

+0

@fforw в его вопросе не упоминается ограничение на запрос. Он пытается избежать опроса через ajax. –

-2

эффект AJAX запросов в очередь до, скорее всего, из-за границы активные запросы к тем же доменам, которые по умолчанию по умолчанию для большинства браузеров.

Смежные вопросы