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 следующего содержания:
запрашиваеться через html:
<div id="ses33"><a href="#33" onClick="ses(33); return false; var item = 33;">Добавить к сравнению</a></div>
таких дивов много. это идёт вывод результатов поиска и базы данных. и возле каждого стоит такая ссылка.
сделал alert(xmlHttp.readyState);
вывело 1.
<?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)
уже если всё дошло, то отправляем ответ.
но понимаю примерно, что за что отвечает.
всё работало потом что-то исправил и бац...
подскажите как правильно. делал на примере потом переделал в этот вариант. так в моём примере всё работало. и щяс работает. а тут почему-то нет(
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)
строка:
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();
раз уж вы с переменной 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 написал(а):
ура получилось
т.к. и написал уважаемый Michael
Спасибо большое
Всем большое спасибо кто откликнулся на мой вопрос Огромное искреннее спасибо
т.к. и написал уважаемый Michael
Спасибо большое
Всем большое спасибо кто откликнулся на мой вопрос Огромное искреннее спасибо
_____________
Процесс написания своего велосипеда повышает профессиональный уровень программиста.