Вот собственно код:
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
// javascript-код голосования из примера
function vote() {
// (1) создать объект для запроса к серверу
var req = getXmlHttp()
// (2)
// span рядом с кнопкой
// в нем будем отображать ход выполнения
var statusElem = document.getElementById('vote_status')
req.onreadystatechange = function() {
// onreadystatechange активируется при получении ответа сервера
if (req.readyState == 4){
// если запрос закончил выполняться
statusElem.innerHTML = req.statusText // показать статус (Not Found, ОК..)
if(req.status == 200){
// если статус 200 (ОК) - выдать ответ пользователю
//получаем XML от сервера
xmlResponse = req.responseXML;
xmlDoc = xmlResponse.documentElement;
// получаем текстовое сообщение,
// которое является первым Child-элементом
// XML документа
helloMessage = xmlDoc.firstChild.data;
alert("Ответ сервера: "+helloMessage);
}
// тут можно добавить else с обработкой ошибок запроса
}
}
// (3) задать адрес подключения
req.open('POST', 'vote.php', true);
// строка обязательна для передачи данных методом POST
req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// объект запроса подготовлен: указан адрес и создана функция onreadystatechange
// для обработки ответа сервера
// (4)
req.send("text=one"); // отослать запрос
// (5)
statusElem.innerHTML = 'Ожидаю ответа сервера...'
}
PHP обработчик:
<?php
if(isset($_POST['text'])){
header('Content-Type: text/xml');
$text = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'.
'<result>'.
'test'.
'</result>';
echo $text;
}
?>
И страница на которой всё происходит:
<!DOCTYPE html>
<html>
<head>
<script src="ajax.js"></script>
</head>
<body>
<input value="Голосовать!" onclick="vote()" type="button" />
<div id="vote_status">Здесь будет ответ сервера</div>
</body>
</html>
Проблема в том, что сценарий js не видит текст в теге <result> при использовании helloMessage = xmlDoc.getElementByTagName('result').data, если ставить helloMessage = xmlDoc.firstChild.data то видит. Подскажите, как решить эту проблему?