наконецто начал изучать ajax.
сделал первую страничку и столкнулся с проблемой.
в текстовое поле ввожу русские символы - в IE выдаёт ошибку "требуется объект" и рагаеца на строчку 'document.getElementById('divMessage').innerHTML = '<i>' + Message + '</i>';', а в FF ошибку выдаёт скрипт прям на страничку "Ошибка синтаксического анализа XML: неопределённая сущность Адрес: http://172[dot]24[dot]0[dot]234/ajax/1/quick[dot][dot][dot].php?name=%D0%B8 Строка 1, символ 73:". (73 символ после знака равно)
с прочими символами всё нормально. подскажите что может быть?
страничка с формой:
PHP:
скопировать код в буфер обмена
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>моя первая страница с аяксом</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="a1.js"></script> </head> <body onload="process()"> Введи имя: <input type="text" id="myName" /> <div id="divMessage" /> </body> </html>
скрипт
PHP:
скопировать код в буфер обмена
// запомниь ссылку на объект var xmlHttp = createXmlHttpRequestObject(); // создать объект function createXmlHttpRequestObject() { var xmlHttp; if (window.ActivXObject) { try { xmlHttp = new ActivXObject("Microsoft.XMLHTTP"); } catch (e) { xmlHttp = false; } } else { try { xmlHttp = new XMLHttpRequest(); } catch (e) { xmlHttp = false; } } if (!xmlHttp) alert("ошибка создания объекта XMLHttpRequest"); else return xmlHttp; } function process() { if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) { xmlHttp.open("GET", "quickstart.php?name=" + encodeURIComponent(document.getElementById("myName").value), true); xmlHttp.onreadystatechange = handleServerResponse; xmlHttp.send(null); } else { setTimeout('process()', 1000); } } function handleServerResponse() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { xmlResponse = xmlHttp.responseXML; xmlDocumentElement = xmlResponse.documentElement; Message = xmlDocumentElement.firstChild.data; document.getElementById('divMessage').innerHTML = '<i>' + Message + '</i>'; setTimeout('process()', 1000); } else { alert ('Проблемы при обращении к серверу: ' + xmlHttp.statusText); } } }
php скрипт
PHP:
скопировать код в буфер обмена
<?PHP header('Content-Type: text/xml'); header("Cache-Control: no-cache, must-revalidate"); echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>'; echo '<response>'; $name = $_GET['name']; { echo 'Введите имя.'; } else { } echo '</response>'; ?>
проблема решена. убрал htmlentities в php-скрипте.(Отредактировано автором: 07 Октября, 2009 - 14:35:03)
|