powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Асинхронный AJAX (проблемы с onreadystatechange?)
25 сообщений из 26, страница 1 из 2
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099463
Пытаюсь "освежить в памяти" AJAX, которым начинал заниматься года 3 назад...
Что-то сильно изменилось?
Простой HTML-файл:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<!DOCTYPE HTML>
<html>
	<head>
		<script src="functions_02.js"></script>
		<link rel="stylesheet" type="text/css" href="main.css">
	</head>
<body>
	<p id="P_01" class="P_Y" onclick="change_class()">Test</p>
</body>
</html>


Файл скриптов:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
// JavaScript Document
var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject()
{
 var xml_Http;
 xml_Http = false;
 if (window.ActiveXObject)
 {
  try
  {
   xml_Http = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch (e)
  {
   xml_Http = false;
  }
 }
 else
 {
  try
  {
   xml_Http = new XMLHttpRequest();
  }
  catch (e)
  {
   xml_Http = false;
  }
 }
 if (!xml_Http) alert('Error in create XMLHttpReqest object!');
 else
 {
	 return xml_Http;
 }
}

function change_class()
{
	if ( xmlHttp.readyState == 4 || xmlHttp.readyState == 0 )
	{
	 xmlHttp.open( "GET", "send_other_class.php", true );
	 xmlHttp.send( null );
	 xmlHttp.onreadystatechange = work_it();
	}
	else
	{
	 alert( 'Some problem appear...\n' + xmlHttp.readyState );
	}
}

function work_it()
{
	alert( xmlHttp.readyState );
 if ( xmlHttp.readyState == 4 )
 {
  if ( xmlHttp.status == 200 )
  {
   xmlResponse = xmlHttp.responseText;
   alert( xmlResponse + "\n:)" );
  }
  else
  {
   alert("Error to server use: "+xmlHttp.statusText);
  }
 }
 else
 {
  alert( "Server busy?\n" + xmlHttp.readyState );
 }
}


... тоже, вроде, не сложный.
PHP-файл вообще -- элементарный:
Код: php
1.
2.
3.
4.
<?php
header("Content-type: text/plain; charset=windows-1251");
echo("P_B");
?>


Проверяю в IE:
Срабатывает: выдаёт автор"4" (alert из work_it) и автор"P_B :)" -- xmlResponse
однако после выдаёт ошибку на строке 43, символ 3 (xmlHttp.onreadystatechange = work_it();)
-- непонятно...
в FF:
выдаёт автор"1" и автор"P_B :)"
в CHROME:
выдаёт автор"1" и автор"Server busy?"

Где копать?
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099466
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)однако после выдаёт ошибку на строке 43, символ 3 (xmlHttp.onreadystatechange = work_it();)
-- непонятно...попробуйте
xmlHttp.onreadystatechange = work_it;
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099469
Паганель,

Круто!
В FF и CHROME всё заработало, а в IE -- умерло :)
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099476
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?), тынц
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099489
iConst,

Спасибо, я это всё читал.
Только не принимал всерьёз
Код: javascript
1.
xmlhttp.onreadystatechange = function() {...


буду пробовать дальше...
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099491
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пора уже на второй уровень переходить:
1. Новые возможности XMLHttpRequest2 ;
2. XMLHttpRequest Level 2 .
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099493
Код: javascript
1.
2.
3.
4.
5.
xmlHttp.onreadystatechange = function() {
	  if (xmlHttp.readyState == 4) {
	   if(xmlHttp.status == 200) { work_it(); }
	  }
	 };


В IE -- не работает...
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099507
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)В IE -- не работает...текст ошибки мы тут все должны угадать?
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099509
Паганель,

Нечего угадывать.
IE -- молчит...
Просто -- не работает.
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099510
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)iConst,

Спасибо, я это всё читал...Тогда должны были заметить, что есть способ создания объекта запроса как new ActiveXObject("Msxml2.XMLHTTP"), в Вашем когда я не заметил, что Вы его учитываете.
Не в этом-ли проблема? О какой версии IE спич?
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099512
Собственно, он в функцию не заходит:
Код: javascript
1.
2.
3.
xmlHttp.onreadystatechange = function()
	 {
		 alert(xmlHttp.readyState);

-- не выполняется.
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099514
skyANAДмитрий-(сколько-же-нас?)iConst,

Спасибо, я это всё читал...Тогда должны были заметить, что есть способ создания объекта запроса как new ActiveXObject("Msxml2.XMLHTTP"), в Вашем когда я не заметил, что Вы его учитываете.
Не в этом-ли проблема? О какой версии IE спич?
IE 8-ой
замена кода не помогла...
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099521
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?), Fiddler2 что говорит?
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099537
skyANA,

Где смотреть? (Только что эту "штуку" установил)
В IE стало срабатывать один раз после очистки кэша!!!
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099539
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?), возможно IE в callback'е не видит xmlHttp (проверять лень), попробуйте так:
Код: javascript
1.
2.
xmlHttp.onreadystatechange = function() {
    alert(this);
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099542
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)skyANA,

Где смотреть? (Только что эту "штуку" установил)
В IE стало срабатывать один раз после очистки кэша!!!
1. Смотреть, ушёл-ли запрос на сервер, и что ответил сервер;
2. Искать тут строку: "IE кэширует XMLHttpRequest запросы"
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099544
skyANAДмитрий-(сколько-же-нас?), возможно IE в callback'е не видит xmlHttp (проверять лень), попробуйте так:
Код: javascript
1.
2.
xmlHttp.onreadystatechange = function() {
    alert(this);


То же самое.
alert срабатывает один раз после очистки кэша.
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099546
Вернее -- один цикл (перебирает события от 1 до 4)
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099550
О-па!
Переключил опцию хранения временных файлов в настройках -- и всё заработало!
Можно-ли, теперь, программно это реализовать?
Не заставлять же пользователя лезть в настройки?
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099552
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlHttp.open( "GET", "send_other_class.php?dummy=" + Math.random(), true );

?
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099555
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099582
Добавил в php-файл строчку:
Код: php
1.
header("Cache-Control: no-store, no-cache, must-revalidate");


вроде, работает...
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099656
Не, не работает...
Но это отдельная тема.
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099708
Собственно, здесь как раз о кэше всё написано:
iConstДмитрий-(сколько-же-нас?), тынц
:)
Огромное спасибо, iConst !
...
Рейтинг: 0 / 0
Асинхронный AJAX (проблемы с onreadystatechange?)
    #38099880
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)Собственно, здесь как раз о кэше всё написано:
iConstДмитрий-(сколько-же-нас?), тынц
:)
Огромное спасибо, iConst !Та, не во что!

ЗЫ: Использование XHR "ручками", как в вашем случае, подразумевает и обработку ответа "ручками". Значит, использование какого-либо клиентского фреймворка будет уместно. Он возьмет на себя значительную часть всякого рода проблем, в частности с совместимостью браузеров.
Выбор ФВ - от задачи, какой больше подходит.

Что бы там не говорили - использование таких фреймворков для "колбасни" на клиенте - уже стандарт де факто. И это правильно.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Асинхронный AJAX (проблемы с onreadystatechange?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]