XMLHTTPREQUEST

Anything1

function fun()
{
 
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', 'http://mak.lutsk.ua/MoveOnMap?level=1&nodeid=1', true);
xmlhttp.send(null);
 
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       alert(xmlhttp.responseText);
         }
  }
};
alert(xmlhttp.readyState);
return false;
}
Рейди стейт = 1 и респонстекст=''в чем проблема? пишу с локалхоста(денвер).
14 ответов

Anything1

Рейди стейт = 1
Список состояний:
0 - Unitialized 1 - Loading 2 - Loaded 3 - Interactive 4 - Complete
Вы устанавливаете обработчик на событие смены статуса запроса XMLHttpRequest, но т.к. обработчик асинхронный, пока XMLHttpRequest загружает документ, выполняется следующий на очереди оператор — alert(xmlhttp.readyState), он Вам и показывает статус «1 - Loading», т.к. в данный момент действительно идет загрузка.
респонстекст=''
А Вы точно выводите что-нибудь в http://mak.lutsk.ua/MoveOnMap?level=1&nodeid=1? У меня все прекрасно выводит. Попробуйте открыть через браузер, и посмотреть что там.Я хочу также заметить, что я использовал свой обработчик, и он прекрасно возвращал данные в объект xmlhttp.


Anything1

замените на вывод информации в тестовое и тогда всё заработает и вы всё увидитесейчас ваш просто полностью прерывает работу скрипта пока вы рассматриваете единичку, статус запроса меняется на 2, 3 и 4, но скрипт отключён и все эти изменения "проходят мимо" вашей функции


Anything1

kalabuni, каким образом «отключен»? Просветите.


Anything1

Спасиб, счас буду пробовать


Anything1

когда срабатывает прописанный в js-коде alert () и появляется модальное окошко, то все скриптовые процессы на странице останавливаются останавливаются все вычисления, останавливаются все таймеры... вообще всё замираетпроверьте, запустив этот код AS IS (как он есть) в любом браузере
<script>
onload = function () {W = ''; myFunc ()}
 
function myFunc ()
{
W = (W == 'red') ? 'aqua' : 'red';
document.getElementById ('myDV').style.backgroundColor = W;
setTimeout (myFunc, 500);
}
</script>
 
<div id="myDV" style="height: 200px; margin: 20px"></div>
<p align="center"><input type="button" value="STOP"
                   onclick="alert ('Âñå ñêðèïòîâûå ïðîöåññû Г*Г* Г±ГІГ°Г*Г*èöå îñòГ*Г*îâëåГ*Г»')">
на странице с частотой в полсекунды меняется фон контейнера но стоит вам нажать на кнопочку и тем самым вызвать окошко alert (), тут же фон замрёт закроете окошко - периодическая смена фона продолжится ----------на проблемной странице топикстартера функция, назначенная им по событию onreadystatechange, ждёт сообщений из сети об изменении статуса запроса но alert'ом эта функция останавливается - и она не может уже потому среагировать на изменения, произошедшие в сети со статусом запроса


Anything1

kalabuni, ааа, вспомнил. Это тоже самое, как prompt/confirm также приостанавливает работу скрипта, в ожидании действий пользователя. В данном случае, все равно, если бы вывод был бы не через alert(), а скажем console.log(), то ничего бы еще не было, т.к. оператор после установки обработчика выполняется быстрее чем сам обработчик. Правильно понимаю?kalabuni, хм, интересная тема. Пока не особо врубаюсь.


Anything1

любое настоящеемодальное окно (а Javascript может делать их три разных - вы их перечислили) блокирует все процессы на странице, пока окно не будет закрытопотому я всякий раз ругаюсь, когда здесь подделки от JQuery, типа такого, называют "модальным окном"


Anything1

kalabuni, можно ссылку на блокировку процессов? Подробней почитаю.


Anything1

Ребят, дело в том, что мой запрос почему-то не возвращает ничего. В статусе в консоле пишет Канселед.а с браузера - да, заходит и потом можно из джсон строки взять массивы.но мне надо программно в переменную загнать это все.
function fun()
{
 
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', 'http://mak.lutsk.ua/MoveOnMap?level=1&nodeid=1', true);
xmlhttp.send(null);
 
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       document.getElementById ('info').value += xmlhttp.responseText + '\n';
         }
  }
};
 
return false;
}
<p><textarea id="info"></textarea>
добавил, всеравно пусто


Anything1

вы в textarea информацию выводили, как я вам посоветовал? да/нет?получилось? изменения статуса с 1 до 3 увидели? да/нет? -----------------а теперь замечу, что в исходном вашем вопросе не было ничего ни про консоль, ни про JSONтак что если решили один ваш вопрос, создавайте для другого вопроса другую тему


Anything1

да, как вы советовали.в респонс текст пусто. Статус - 1.Не было изменениясамо прост оотредактировало


Anything1

ооохх... и тут детский сад изучайте


Anything1

у меня в консоли ругается на строку: xmlhttp.send(null);мне не надо ничего отсылать, мне нужно только получать данные.обьясните по пальцам неуку=)Origin http://localhost is not allowed by Access-Control-Allow-Origin.вот что пишетпоходу кроссдоменный запрос.Сервер не мой, тогда как забрать мне данные из этого запроса, киньте ссылку


Anything1

мне не надо ничего отсылать, мне нужно только получать данные.
я дал пример, из которого видно, что при запросе к php-файлу ему можно что-то отсылать (но можно и не отсылать!)из примера также видно, что php-файл может получать какие-то данные при запросе к нему и эти данные обрабатывать и результат обработки отправлять странице (а может ничего не обрабатывать, а высылать то, что этому файлу изначально запрограммировано!)всякий здравомыслящий человек это бы, имхо, понял но, увы, оказывается, что вы - не из таких -------------консоль, кроссдоменный запрос, не ваш сервер... походу вы решили в одной теме изучить всё мирозданиеповторяю любимую присказку здешних модераторов: "один вопрос - одна тема"