|
|
|
| Имееются функции:
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 :) | |
|
|
|
|
|
|
|
для: DDK
(25.04.2006 в 15:24)
| | Так может readyState == 4 не возникает?
Когда-то он странным образом (setTimeout) рекурсивно в FF не работал и пришлось ставить setInterval. | |
|
|
|
|
|
|
|
для: 12345
(25.04.2006 в 16:21)
| | Увы, нет, не так всё просто :( Вставлял перед таймером алерт, алерт вылетал и всё... на этом всё загадочно (без ошибок!) оканчивалось... | |
|
|
|
|
|
|
|
для: 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);
}
|
| |
|
|
|