Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Асинхронный AJAX (проблемы с onreadystatechange?) / 25 сообщений из 26, страница 1 из 2
03.01.2013, 17:49
    #38099463
Асинхронный AJAX (проблемы с onreadystatechange?)
Пытаюсь "освежить в памяти" 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
03.01.2013, 17:56
    #38099466
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Асинхронный AJAX (проблемы с onreadystatechange?)
Дмитрий-(сколько-же-нас?)однако после выдаёт ошибку на строке 43, символ 3 (xmlHttp.onreadystatechange = work_it();)
-- непонятно...попробуйте
xmlHttp.onreadystatechange = work_it;
...
Рейтинг: 0 / 0
03.01.2013, 18:00
    #38099469
Асинхронный AJAX (проблемы с onreadystatechange?)
Паганель,

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

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


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


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

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

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

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

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

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

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


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

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


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

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

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


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