Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2014, 13:38
Новичок на форуме
Отправить личное сообщение для zinaas Посмотреть профиль Найти все сообщения от zinaas
 
Регистрация: 04.06.2014
Сообщений: 2

Простой alert внутри обработчика меняет работоспособность функции.
Hi All!
Начал читать книгу К.Даре и Б.Бринзаре и срезался на первом же примере.
есть функция - обработчик XMLHttpRequest::onreadystatechange:
function handleServerResponse()
{
//alert("Handling..");
if (xmlHttp.readyState==4)
{
if (xmlHttp.status==200)
{
xmlResponse=xmlHttp.responseXML;
xmlDocumentElement=xmlResponse.documentElement;
hellomessage = xmlDocumentElement.firstChild.data;
document.getElementById("divMessage").innerHTML = '<i>'+hellomessage+'<i>';
setTimeout('process()',1000);
}
else
{
alert('Нет ответа от сервера'+xmlHttp.statusText);
}
}
}

Так вот, если я оставлю алерт в начале функции - все работает как задумано - с определенной периодичностью обработчик запускается снова и снова. Как только алерт убираю - все, функция работает только один раз.
Подскажите, куда смотреть, как ловить?

Андрей.
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2014, 15:09
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Когда алерт стоит вначале, сколько раз он показывается? 4?)
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2014, 14:30
Новичок на форуме
Отправить личное сообщение для zinaas Посмотреть профиль Найти все сообщения от zinaas
 
Регистрация: 04.06.2014
Сообщений: 2

Перепроверил еще раз:
Если алерт стоит,
- firefox показывает его в цикле (бесконечном) как задумано (надписи меняет)
- chrome не запускает функцию ни разу

Если алерт убрать,
- firefox и chrome не запускают функцию ни разу (нет обновления надписи)

Вот вызывающая обработчик функция из примера:
function process()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
{
name=encodeURIComponent(document.getElementById(|m yName").value);
xmlHttp.open("GET", "quickstart.php?name="+name, true);
xmlHttp.onreadystatechange=handleServerResponse();
xmlHttp.send(null); //пробовал менять местами со строчкой выше - результата нет
}
else
{
setTimeout("process()",1000);
}
}//func

Последний раз редактировалось zinaas, 05.06.2014 в 14:36.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество вызовов функции внутри функции lohmatiy Javascript под браузер 4 24.02.2014 17:45
Можно ли писать определение функции внутри document.ready()? Fatalityap jQuery 7 10.06.2012 03:35
Центровка текста внутри Alert Le-mark43 Events/DOM/Window 4 18.05.2012 15:03
[jQuery] [Обработка клика] Как не потерять текущий контекст внутри обработчика? xintrea Events/DOM/Window 1 10.02.2011 16:34
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03