Тоесть у нас 2 списка. При выборе 1 из элементов в первом списке, у нас запускается функция getXMLDocument(url, callback), где в url передаются параметры для обработки на сервере, а в callback указывается, как будет обработан сформированный xml файл?
Собственно, что получается на данный момент ...
<script langauge="JavaScript">
function UnDisableCombo2()
{
var url = "/1.php?combo1=" + encodeURIComponent(document.form1.combo1.value)
if (document.form2.combo2.disabled == true)
{
document.form2.combo2.disabled = false;
}
else
{
document.form2.combo2.disabled = true;
}
getXMLDocument( url , xml_parser )
}
// Send a post form to the server using XMLHttpRequest.
function getXMLDocument(url, callback)
{
if (!window.XMLHttpRequest)
return false;
var myDoc = new XMLHttpRequest();
if (typeof(callback) != "undefined")
{
myDoc.onreadystatechange = function ()
{
if (myDoc.readyState != 4)
return;
if (myDoc.responseXML != null && myDoc.status == 200)
callback(myDoc.responseXML);
};
}
myDoc.open('GET', url, true);
myDoc.send(null);
return true;
}
function xml_parser(xmldoc)
{
var xml_parser_result = xmldoc.getElementsByTagName("res")[0].getElementsByTagName("new_line")[0].firstChild.nodeValue;
alert( xml_parser_result );
}
</script>
UnDisableCombo2() , формируем адресную строку, делаем второй список активным, запускаем функцию запроса
getXMLDocument(url, callback), методом GET передаём параметры запроса на сервер
<?
$combo_1 = $_GET['combo1'];
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<res>'
echo '<new_line>$combo_1</new_line>';
echo '</res>';
?>
На сервере строим xml файл вида( Пока для теста, затем данные будут строиться по результатам mysql запросов)
<?xml version="1.0" encoding="UTF-8"?>
<res>
<new_line>first</new_line>
</res>
xml_parser( xmldoc ), получая xml файл, пытаемся вытянуть оттуда сфомированные данные.
Вопрос:
В чём ошибка
function xml_parser(xmldoc)
{
if (xmldoc == null) alert("1");
else alert("0");
var root_node = xmldoc.getElementsByTagName('res').item(0);
alert(root_node.firstChild.data);
}
Всегда 1
Результат работы функции ниже:
1 2 3 7 4 8 4 4 4 5 // Send a post form to the server using XMLHttpRequest.
function getXMLDocument(url, callback)
{
alert("1");
if (!window.XMLHttpRequest)
return false;
var myDoc = new XMLHttpRequest();
alert("2");
if (typeof(callback) != "undefined")
{
alert("3");
myDoc.onreadystatechange = function ()
{
alert("4");
if (myDoc.readyState != 4)
return;
alert("5");
if (myDoc.responseXML != null && myDoc.status == 200)
{
alert("6");
callback(myDoc.responseXML);
}
};
}
alert("7");
myDoc.open('GET', url, true);
myDoc.send(null);
alert("8");
return true;
}
Как я понял, как таковой XML файл не формируется, либо статус ответа не "ОК"
2Если из условия
if (myDoc.responseXML != null && myDoc.status == 200)
убрать проверку по статусу, то заход в условный оператор производится, далее вызывается callback функция, а в ней срабатывает условие
if (xmldoc != null)
Если формировать xml файл вида
<?xml version="1.0" ?>
<root>
first
</root>
а пытаться вывести через функцию
function xml_parser(xmldoc)
{
if (xmldoc == null) alert("1");
else alert("0");
var root_node = xmldoc.getElementsByTagName('root').item(0);
alert(root_node.firstChild.data);
}
То получаем "0", и всё