Не работает AJAX скрипт!

интернет компьютеры программирование JavaScript AJAX

Проблема у меня в следующем: Написал скрипт на ajax он работал и было все прекрасно. А вот на следующий день он перестал работать. Да, я понимаю возможно покажется смешным. Но это так! Я взял готовые скрипты которые прилагаються к учебнику по AJAX. Которые сто процентов рабочие. Но у меня они почему то не срабатывают. Я переустанавливал Денвер два раза ради этого. Так как у меня хостинга нету, я не смог проверить на хостинге. Но у меня на компьютере не работают эти скрипты. Я хотел бы Вам привести один листинг из книги по AJAX. Очень простой!

1. Это файл html (название его async.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>AJAX Foundations: Using XMLHttpRequest</title>
<script type="text/javascript" src="async.js"></script>
</head>
<body onload="process()">
Hello, server!

<br/>
<div id="myDivElement" />
</body>
</html>

Примечание:
2. К нему подключаем javascript с ajax название (async.js)
С содержанием:
// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject()
{
// will store the reference to the XMLHttpRequest object
var xmlHttp;
// this should work for all browsers except IE6 and older
try
{
// try to create XMLHttpRequest object
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
// assume IE6 or older
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
// try every prog id until one works
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
// try to create XMLHttpRequest object
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {}
}
}

Примечание:
// return the created object or display an error message
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}


// called to read a file from the server
function process()
{
// only continue if xmlHttp isn't void
if (xmlHttp)
{
// try to connect to the server
try
{
// initiate reading the async.txt file from the server
xmlHttp.open("GET", "async.txt", true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
// display the error in case of failure
catch (e)

{
alert("Can't connect to server:\n" + e.toString());
}
}
}

// function that handles the HTTP response
function handleRequestStateChange()
{
// obtain a reference to the <div> element on the page
myDiv = document.getElementById("myDivElement");
// display the status of the request
if (xmlHttp.readyState == 1)
{
myDiv.innerHTML += "Request status: 1 (loading) <br/>";
}
else if (xmlHttp.readyState == 2)
{
myDiv.innerHTML += "Request status: 2 (loaded) <br/>";
}
else if (xmlHttp.readyState == 3)
{
myDiv.innerHTML += "Request status: 3 (interactive) <br/>";
}
// when readyState is 4, we also read the server response
else if (xmlHttp.readyState == 4)
{
// continue only if HTTP status is "OK"
if (xmlHttp.status == 200)
{
try
{
// read the message from the server
response = xmlHttp.responseText;
// display the message
myDiv.innerHTML +=
"Request status: 4 (complete). Server said: <br/>";
myDiv.innerHTML += response;
}
catch(e)
{
// display error message
alert("Error reading the response: " + e.toString());
}
}
else
{
// display status message
alert("There was a problem retrieving the data:\n" +
xmlHttp.statusText);
}
}
}

Примечание:
3. Скрипт async,js просто выводит данные из текстового файла с именем async.txt
Создаем обычный текстовой файл вот с таким именемт async.txt и с таким вот содержанием в нем

Hello client!

Вот и все! Скрипт простой, просто выводит содержимое из текстового файла в блоке <div id="myDivElement" />
Но предварительно он выводит состояние обработки (readyState) от 1 до 4.
Тут и проблема! У меня все останавливается выполнение скрипта на 3-ем этапе (идет обмен).
Вот так:
Hello, server!
Request status: 2 (loaded)
Request status: 3 (interactive)

До 4-го (завершен) не доходит. И выводит сообщение alert() с текстом There was a problem retrieving the data: Это если в браузере Опера.
Если в IE8 опять же alert() с надписью Can't connect to server: TypeError: Отказано в доступе.
Если не трудно, проверьте у себя. Работает у вас? Или такая же история? Может быть у меня какие то службы отключены в Windows? Что может быть вообще? Сервер у меня работает нормально. Mysql, php. Все проверил, все нормально работает!

Примечание:
Решил свою проблему! Мне стыдно говорить в чем было дело. Ступил, прямо скажу. Путь к скрипту был не верный. Вызывал его из программы dreamweaver и из за этого произошла заморочка.
Благодарю пользователя Imm за внимание и адекватный ответ. А не то, что тут некоторые написали про много читать и Jquery.
Благодарю за внимание!
Ответы:
много читать...
вопрос, а пользоваться jquery религия не позволяет?
Если в опере, то какой statusText? «There was a problem retrieving the data:» это всего лишь половина сообщения об ошибке. =) Достаточно вообще код ошибки, а не сообщение. У тебя в самом конце кода стоит проверка if (xmlHttp.status == 200). Так вот если не равно, то выводится алерт с приведенным тобой текстом. Прикол в том, что не всегда правильный ответ должен быть со статусом 200. Если мне память не изменяет, код 304 означает, что контент не изменился и браузер может воспользоваться кэшем. Я думаю косяк где-то в этой проверке. Короче код ответа сервера в студию!
P.S. Логи сервера смотрел?
Ох. Это уже два дня назад было =)
У себя так и не посмотрел, но мой биоинтерпретатор с браузером говорят, что надо файлик txt отправлять с заголовком pragma: no-cache (за правильность написания не ручаюсь).


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.