ошибка в Mozilla

Zigfrid

Новичок
ошибка в Mozilla

Добрый день.
Пытаюсь Ajax изучить. Пытаюсь по книжке простенький код написать. Php формирует xml и передаёт его на вебстраницу через javascript. В результате в IE7 содержимое XML отображается нормально, а в Мозилле (2.0.0.8) срабатывает обработка исключения (выделил в коде красным цветом).
Причём почему-то в Мозилле, не отображаются русские буквы ошибки.
Может подскажите что-то?

phptest.html
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/xhtml11.dtd">
<html>
	<head>		
		<title>Teach Ajax</title>
		<script type='text/javascript' src='phptest.js'></script>
	</head>
	<body onload='process()'>
	Книга об Ajax 
	<br />
	<div id='myDivElement' />
	</body>
</html>
phptest.js
Код:
//переменная для хранения ссылки на объект XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
//создаёт экземпляр объекта XMLHttpRequest
function createXmlHttpRequestObject()
{
	//переменная для хранения ссылки на объект XMLHttpRequest
	var xmlHttp;
	//эта часть кода должна работать во всех броузерах за искл. ИЕ6 и более старых его версий
	try
	{
		//попытаться создать объект XMLHttpRequest
		xmlHttp = new XMLHttpRequest();		
	}
	catch(e)
	{
		//предполагается, что в качестве броузера используется ИЕ6 или более старая его версия
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft XMLHTTP");
		//попробовать все возможные  prog id пока какая-то попытка не увенчается успехом
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
				//попытаться создать объект XMLHttpRequest
				xmlHttp = new ActiveObject(XmlHttpVersions[i]);
			}
			catch(e) {}			
		}			
	}
	//вернуть созданный объект или вывести сообщение об ошибке 
	if (!xmlHttp)
		alert("Ошибка создания объекта XMLHttpRequest");
	else 
		return xmlHttp;
}

//вызывается для чтения файла с сервера
function process()
{
	//продолжать только, если xmlHttp не пустая срока
	if (xmlHttp)
	{
		//попытаться установить соединение с сервером
		try
		{
			//инициировать чтение файла с сервера
			xmlHttp.open("GET","phptest.php",true);
			xmlHttp.onreadystatechange = handleRequestStateChange;
			xmlHttp.send(null);
		}
		//вывести сообщение об ошибке в случае неудачи
		catch(e)
		{
			alert("111Невозможно соедениться с сервером:\n" + e.toString())
		}
	}
}

//эта функция вызывается при изменении  состояния запроса HTTP
function handleRequestStateChange()
{
	//когда readyState = 4, мы можем прочитать ответ сервера
	if (xmlHttp.readyState == 4)
	{
		//продолжать тлько, если статус HTTP равен ОК
		if (xmlHttp.status == 200)
		{
			try
			{
			//обработать ответ, полученный с сервера
			handleServerResponse();				
			}
			catch(e)
			{
				//вывести сообщение об ошибке
				[COLOR=red]alert("222Ошибка чтения ответа:\n" + e.toString())[/COLOR] 
			}
		}
		else
		{
			//вывести сообщение об состоянии
			alert("333Возникли проблемы во время получения данных:\n" + xmlHttp.statusText);
		}
	}
}

//обрабатывает ответ, полученный с сервера
function handleServerResponse()
{
	//прочитать сообщение, полученное с сервера
	var xmlResponse = xmlHttp.responseXML;
	//предотвратить потенциально возможные ошибки в ИЕ и Опере
	if (!xmlResponse || !xmlResponse.documentElement)
		throw("Неверная структура XML:\n" + xmlHttp.response)
	//предотвратить потенциально возможные ошибки в Firefox
	var rootNodeName = xmlResponse.documentElement.nodeName;	
	if (rootNodeName == "parsererror")
		throw("Invalid XML structer:\n" + xmlHttp.response)
	//получить ссылку на корневой элемент документа XML
	xmlRoot = xmlResponse.documentElement;
	//получить ссылки на массивы с названия ми книг и их ISBN
	titleArray = xmlRoot.getElementsByTagName("title");
	isbnArray = xmlRoot.getElementsByTagName("isbn");
	//сгенерировать ХТМЛ код
	var html = "";
	//обойти в цикле массивы и создать структуру  ХТМЛ
	for (var i = 0; i < titleArray.length; i++)
		html += titleArray.item(i).firstChild.data + isbnArray.item(i).firstChild.data + "<br/>";
	//получить ссылку на новый элемент 	<div>
	myDiv = document.getElementById("myDivElement");
	//вывести полученный код ХТМЛ
	myDiv.innerHTML = html;		
}
phptest.php
Код:
<?php
//определить формат выходных данных как XML
header("Content-Type: text/xml");
//создать новый документ XML
$dom = new DOMDocument();

//создать корневой элемент <response>
$response = $dom->createElement("response");
$dom->appendChild($response);

//создать элемент <books> и добавить его как дочерний по отношению к <response>
$books = $dom->createElement("books");
$response->appendChild($books);

//создать элемент title для элемента book
$title = $dom->createElement("title");
$titleText = $dom->createTextNode("EL Libro");
$title->appendChild($titleText);

//создать элемент isbn для элемента book
$isbn = $dom->createElement("isbn");
$isbnText = $dom->createTextNode("1-90908-21");
$isbn->appendChild($isbnText);

//создать элемент book
$book = $dom->createElement("book");
$book->appendChild($title);
$book->appendChild($isbn);

//добавить элемент <book> как дочерний по отношению к элементу <books>
$books->appendChild($book);

//переписать структуру XML в строковую переменную
$xmlString = $dom->saveXML();
//вывести строку XML
echo $xmlString;
?>
 

fast2111

Новичок
Каракули это заголовки да кодировки.
Начни с простого. с той ссылки что я дал, да и выведи xmlHttp.response просто тект да посмотри что там. firebug тебе в помощь и вообще ошибка где-то в handleServerResponse() :)
 

Zigfrid

Новичок
Автор оригинала: fast2111
Каракули это заголовки да кодировки.
Начни с простого. с той ссылки что я дал, да и выведи xmlHttp.response просто тект да посмотри что там. firebug тебе в помощь и вообще ошибка где-то в handleServerResponse() :)
ок. спасибо. попробую...
 
Сверху