[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ajax (xmlHttp.readyState == 4)
aH6y
код js:

var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;

function createObject() {
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer")
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}

var http = createObject();

if (!xmlHttp)
{
alert("Ошибка создания обьекта XMLHttpRequest.");
}
else
{
return xmlHttp;

}
}


function ses(item)
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
xmlHttp.open("GET", "ajax.php?additem=" + item, true);
xmlHttp.onreadystatechange = handleServerResponse(item);
xmlHttp.send(null);
}
}



function handleServerResponse(item)
{

var it = 'ses' + item;
alert('работает handleServerResponse(item)');
if (xmlHttp.readyState == 4)
{
alert('всё верно - xmlHttp.readyState == 4');
if (xmlHttp.status == 200)
{
xmlResponse = xmlHttp.responseXML;
xmlDocumentElement = xmlResponse.documentElement;
mes = xmlDocumentElement.firstChild.data;
document.getElementById(it).innerHTML = mes;
}
else
{
alert('При обращении к серверу возникли проблеммы:' + xmlHttp.statusText);
}
}
}



всё работает до места:

if (xmlHttp.readyState == 4)

далее даже alert(); не выдаёт. в чём проблемма не пойму:(

Зарание спасибо:)



Спустя 1 час, 15 минут, 3 секунды (16.09.2010 - 20:48) vasa_c написал(а):
Очевидно, потому что redayState не доходит до 4.
Что это за набор функций? Откуда они и как вызываются?

Спустя 35 минут, 58 секунд (16.09.2010 - 21:23) aH6y написал(а):
ну смотрите это ajax. запрос идёт на проверку в файле ajax.php следующего содержания:

<?php
session_start();
include("blocks/bd.php");
header('Content-Type: text/xml');
echo '<?xml version = "1.0" encoding = "Windows-1251" standalone = "yes"?><response>good</response>';
?>


запрашиваеться через html:

<div id="ses33"><a href="#33" onClick="ses(33); return false; var item = 33;">Добавить к сравнению</a></div>

таких дивов много. это идёт вывод результатов поиска и базы данных. и возле каждого стоит такая ссылка.

сделал alert(xmlHttp.readyState);

вывело 1.

Спустя 23 минуты, 41 секунда (16.09.2010 - 21:47) vasa_c написал(а):
Не понятно... Запрос инициируется в ses()? Тогда зачем в ней проверка xmlHttp.readyState == 4?

Спустя 3 минуты, 4 секунды (16.09.2010 - 21:50) aH6y написал(а):
я в js не силён. а в ajax тем более...

но понимаю примерно, что за что отвечает.
всё работало потом что-то исправил и бац...

подскажите как правильно. делал на примере потом переделал в этот вариант. так в моём примере всё работало. и щяс работает. а тут почему-то нет(

p.s. как я понимаю тут:

if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)

идёт проверка на то, что оно либо неготов либо уже всё сделано.

а тут if (xmlHttp.readyState == 4)

уже если всё дошло, то отправляем ответ.

Спустя 13 минут, 47 секунд (16.09.2010 - 22:04) aH6y написал(а):
вообщем всё заработало
строка:

xmlHttp.onreadystatechange = handleServerResponse(item);

без (item) - всё работает.

но как тогда мне переменную item взять из функции ses(item)

Спустя 12 часов, 10 минут, 25 секунд (17.09.2010 - 10:14) aH6y написал(а):
подскажите пожалуйста:)

Спустя 9 минут, 38 секунд (17.09.2010 - 10:24) Gram написал(а):
var http = createObject();
раз уж вы с переменной http собираетесь работать, так почему же в дальнейшем ее не используете?

или
if (http.readyState == 4) будет корректно

или var xmlHttp = createObject();

Спустя 1 минута, 6 секунд (17.09.2010 - 10:25) Michael написал(а):
Через глобальную переменную. Попробуй в самом объекте запроса сохранить:
function ses(item)
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
xmlHttp.item = item;
xmlHttp.open("GET", "ajax.php?additem=" + item, true);
xmlHttp.onreadystatechange = handleServerResponse(item);
xmlHttp.send(null);
}
}

а потом достанешь:
var it = 'ses' + xmlHttp.item;

Спустя 10 минут, 31 секунда (17.09.2010 - 10:36) Gram написал(а):
и скачайте и установите себе плагин мозиллы firebug. активируйте консоль и отметьте пункт показывать ошибки js. тогда при запуске любого кусочка js вы будете знать в малейших подробностях почему тот или иной код не сработал.

Спустя 35 минут, 42 секунды (17.09.2010 - 11:11) aH6y написал(а):
Цитата (Gram @ 17.09.2010 - 10:36)
и скачайте и установите себе плагин мозиллы firebug. активируйте консоль и отметьте пункт показывать ошибки js. тогда при запуске любого кусочка js вы будете знать в малейших подробностях почему тот или иной код не сработал.

она итак стоит:)

Спустя 6 минут, 37 секунд (17.09.2010 - 11:18) aH6y написал(а):
ура получилось biggrin.gif

т.к. и написал уважаемый Michael

Спасибо большое smile.gif

Всем большое спасибо кто откликнулся на мой вопрос smile.gif Огромное искреннее спасибо smile.gif


_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.