С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886

AJAX, readyState

17.03.2015, 15:46. Показов 1016. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь воспроизвести очень примитивный пример. Нажал на кнопку, вписал что-то в <div>
Сразу столкнулся с проблемкой

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
<script language="javascript">
    function MyFunc(){
      var MyRequest = new XMLHttpRequest;
      MyRequest.onreadystatechange = MyFuncComlete;
      MyRequest.open("GET", location.href, true);
      MyRequest.send(NULL);
    }
 
    function MyFuncComlete(){
      // alert("OK");
     if (MyRequest.readyState==4) alert("OK");
    }
</script>

HTML5
1
2
3
4
5
6
<table border="1" width="200">
    <tr><td colspan=3></td></tr>
    <tr><td></td><td><div id="MyDiv" class="MyClass"  align="center">TEST</div></td><td></td></tr>
    <tr><td colsspan=3></td></tr>
</table>
<button onclick="MyFunc()" >ПРОБУЕМ</button>
Я ожидал, что по нажатию на кнопку выскочит сообщение, но ничего не происходит. Сама функция работает, если не проверять readyState, то сообщение выскакивает.

Прошу пояснить чего я упустил. Причем мне нужно именно пояснение, а не просто готовый пример
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2015, 15:46
Ответы с готовыми решениями:

ReadyState отдает 1 и responseText пустой
function ajax(getValue) { var request = new XMLHttpRequest(); request.open('GET','/?text=' + getValue, true); ...

Не меняется свойство readyState объекта XMLHttpRequest
Здравствуйте! У меня с виду простейший код. Необходимо выводить текущее значение readyState с помощью alert. Значения ведь меняются от 0 до...

После вставки ответа ajax в input запроса, ответ ajax не изменяется
Здравствуйте! В общем так, есть поле input, есть таблица с полем count. Задача: изменить содержимое поле count по средством ajax, но при...

6
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.03.2015, 16:26
после исполнения команды MyRequest.send ()
свойство MyRequest.readyState изменяется 4 раза
-- с 0 на 1
-- с 1 на 2
-- с 2 на 3
-- с 3 на 4 (и только четвёрка означает, что ответ от серверного файла страницей получен)
соответственно, при этих изменениях ваша функция MyFuncComlete () вызывается 4 раза подряд (ведь назначена эта функция вами на событие onreadystatechange, что переводится "когда readyState изменится")
если сообщение не "выскакивает", это означает, что у вас какие-то проблемы с вызываемым серверным файлом - то ли этого файла по указанному вами адресу на сервере не существует, то ли этот серверный файл не предназначен для отдачи ответа странице, то ли ещё что-то...

и, судя по вашему коду, таковые проблемы имеются -- зачем ваша страница отсылает ajax-запрос самой себе
MyRequest.open("GET", location.href, true); ?
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
17.03.2015, 16:28  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
этот серверный файл не предназначен для отдачи ответа странице
Хорошо. Это понял. Я этого не видел, что файл каким-то образом должен быть предназначен или не предназначен.

JavaScript
1
 MyRequest.open("GET", "http://localhost/htdocs/inf.php", true);
PHP
1
http://localhost/htdocs/inf.php
- открывается в браузере если вводить адрес вручную.
Вот все его содержимое
PHP
1
<?php echo phpinfo(); ?>
Но это ничего не меняет. Сообщение не выскакивает.

Что это за что-то еще? Это меня и интересует.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.03.2015, 16:32
никто, коме вас не знает, что делает phpinfo() - может быть, эта функция не возвращает
символьную строку
а передать странице через объект XMLHttpRequest серверный файл может только символьную строку

поэтому замените ваш код на <?php echo 'HREN'; ?> и посмотрите - выскочит ли окошко со словом HREN
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
17.03.2015, 16:38  [ТС]
Изменил.

HTML5
1
2
3
<HTML>
   TEST!!!
</HTML>
Сообщения нет.

Добавлено через 54 секунды
В смысле страница есть, сообщения нет.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
17.03.2015, 16:38
и что вы изменили?
вам надо было изменить содержимое PHP-файла под именем inf.php, причём этот файл должен находиться на сервере, где имеется установленным PHP

где строки <?php и ?>, куда они пропали после "изменения"

и, походу, вы пытаетесь послать запрос какому-то своему файлу на компьютере, нисколько не задумываясь, что это должен быть именно сервер, и что на этом сервере должен быть PHP
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
17.03.2015, 17:30  [ТС]
В итоге немного поправили, но на вопрос не ответили.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
<script language="javascript">
    function MyFunc(){
      var MyRequest = new XMLHttpRequest;
      MyRequest.onreadystatechange = MyFuncComlete;
      MyRequest.open("GET", "http://localhost/htdocs/inf.php", true);
      MyRequest.send(NULL);
    }
 
    function MyFuncComlete(){
      // alert("OK");
     if (MyRequest.readyState==4) alert("OK");
    }
</script>
HTML5
1
<button onclick="MyFunc()" >ПРОБУЕМ</button>

PHP
1
http://localhost/htdocs/inf.php
существует и вручную страница открывается. Весь ее текст
PHP
1
2
3
<HTML>
   TEST!!!
</HTML>
Ожидаю сообщения alert, а оно не вылезает. Оно должно 1 раз выползти.
Что я упустил?

Добавлено через 9 минут
Цитата Сообщение от kalabuni Посмотреть сообщение
где строки <?php и ?>, куда они пропали после "изменения"
А что оно меняет? php или HTML в любом случае файл существует и текст в нем есть
Ну написал
PHP
1
2
3
<HTML>
  <?php echo "TEST!!!"?>
</HTML>
какая, блин, разница.


Это xampp c apache+php, php работает как надо, в javascript я что-то упустил.

Добавлено через 34 минуты
Все, понял ошибку свою.
у меня send(NULL), а надо send(null)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2015, 17:30
Помогаю со студенческими работами здесь

AJAX внутри AJAX на чистом JS
Вся эта красота(ниже) подгружает php файл. Как подгрузить, например, тоже самое из подгруженного файла? КАК? :wall: ...

Определить AJAX библиотеку или отследить AJAX запрос любым методом
Требуется определить какая библиотека используется на сайте для создания AJAX запросов. Стандратный запрос типа windows.jquery.active не...

Стандарт ajax или jquery-> ajax?
Добрый день, такой вопрос что лучше всего использовать стандарт AJAX объект XMLHttprequest либо же ajax в библиотеке jquery? Как...

Ajax загрузка формы из загруженного через ajax блока
Вообщем, через ajax в блок подгружается форма, из нее нужно загрузить в этот же блок др.контент. $('#form').submit(function(e){ ...

Ajax запрос в div с уже 'прилетевшим' ajax'om
Добрый день, ребят... Не нашёл отдельного раздела по ajax, а разобраться очч надо, т.к.в JS полный профан. Никак не могу разобраться уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru