Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как построить объект из XML ? (https://javascript.ru/forum/dom-window/39991-kak-postroit-obekt-iz-xml.html)

Арсен 20.07.2013 09:34

Как построить объект из XML ?
 
У меня есть такой ajax запрос:
function Show_Description(id){
                if(selectItemID > 0){
                    var x = new XMLHttpRequest();
                    x.open("POST", "../getdescriptions.php", true);
                    x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    x.onreadystatechange = function (){
                        if(x.readyState == 4  && x.responseText != "false"){
                            var xml = x.responseXML;
                            var data = xml.getElementsByTagName("data");
                            alert(data[0].childNodes[0].value);
                        }
                    }
                    x.send("id=" + id);
                }
            }


Алертом у меня выводит "undefined", почему так происходит? Может я не правильно обращаюсь к дочерним элементам?


Если елаю так: alert(data[0].childNodes.lingth); то выводит "10"


Когда я через alert(x.responseText) проверял действительно ли приходит XML, то все успешно мне выдало.
Вот результат:
Код:

<?xml version="1.0" encoding="cp1251"?>
<data>
    <id>5</id>
    <article>text1</article>
    <price>text2</price>
    <properties>text3</properties>
    <description>text4</description>
    <img>text5</img>
    <img1></img1>
    <img2></img2>
    <category>text6</category>
    <datetime>2013/07/19 11:53:40</datetime>
</data>

Тоесть от сервера приходит адекватный XML.

Как мне из этого создать объект и что бы сним работать?


P.S. Может из-за того что сервер неправильно заголовки передает?

Вот что у меня на сервере:

В методе Get_Descriptions($id) просто через return возвращается формированный XML.

if(isset($_POST["id"])){
header("Content-Type: text/xml");
echo $K->Get_Descriptions($_POST["id"]);
}


Может я не там заголовки передаю?


Помогите пожалуйста...

Арсен 20.07.2013 10:34

Спасибо большое, разобрался,

var data = xml.getElementsByTagName("data")[0].childNodes;
							alert(data[0].textContent);

danik.js 20.07.2013 15:46

xml.documentElement.childNodes[0].texContent


Часовой пояс GMT +3, время: 14:15.