Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как поставить Timeout в данном случае ?
 
 автор: DDK   (25.04.2006 в 15:24)   письмо автору
 
 

Имееются функции:

function get_messages() {
    http_request.onreadystatechange = function() { 
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                lasttime = http_request.getResponseHeader('lasttime');
                setTimeout("get_messages()", 1000); // Игнорируется :(
            } else {
                alert('There was a problem with the request.');
            }
        }
        
    };
    http_request.open("POST", "load.php?mode=msgs", true);
    http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    if(lasttime != 0) {
        http_request.send("lasttime="+lasttime);
    } else {
        http_request.send();
    }
}

function chat_start() {
    http_request = xml_load_engine();
    if(http_request) {
        get_messages();
    }
}


Вызывается спепрва, как можно догадаться, функция chat_start()... Как зациклить на таймаут функцию get_messages(); ?!

ЗЫ: Перевожу чат на AJAX :)

   
 
 автор: 12345   (25.04.2006 в 16:21)   письмо автору
 
   для: DDK   (25.04.2006 в 15:24)
 

Так может readyState == 4 не возникает?

Когда-то он странным образом (setTimeout) рекурсивно в FF не работал и пришлось ставить setInterval.

   
 
 автор: DDK   (25.04.2006 в 16:38)   письмо автору
 
   для: 12345   (25.04.2006 в 16:21)
 

Увы, нет, не так всё просто :( Вставлял перед таймером алерт, алерт вылетал и всё... на этом всё загадочно (без ошибок!) оканчивалось...

   
 
 автор: DDK   (25.04.2006 в 17:01)   письмо автору
 
   для: DDK   (25.04.2006 в 16:38)
 

Всё, решил проблему :) Оказалось. нужно "очищать" предыдущий запрос перед следующим так:

function get_messages() {
    http_request.abort();
    http_request.onreadystatechange = parse_messages;
    http_request.open("POST", "load.php?mode=msgs", true);
    http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    if(lasttime != 0) {
        http_request.send("lasttime="+lasttime);
    } else {
        http_request.send();
    }
    setTimeout("get_messages()", 2000);
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования