Показать сообщение отдельно
  #1 (permalink)  
Старый 24.12.2012, 14:36
Интересующийся
Отправить личное сообщение для ŞΘLƉiΞR Посмотреть профиль Найти все сообщения от ŞΘLƉiΞR
 
Регистрация: 04.04.2012
Сообщений: 17

js не видит содержимое тега
Вот собственно код:
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 то видит. Подскажите, как решить эту проблему?
Ответить с цитированием