Странное поведение при загрузке страницы с использованием XMLHttpRequest - PullRequest
1 голос
/ 12 июля 2010

У меня есть такой скрипт:

var xml_http_request = new XMLHttpRequest();
xml_http_request.addEventListener('readystatechange', PageReady, false);
xml_http_request.overrideMimeType("text/xml");
xml_http_request.open('GET', "index.xml", true);
xml_http_request.send(null);

function PageReady()
{
    if(this.readyState != 4)
        return;
    var Doc = this.responseXML;
    alert(Doc.getElementById("page1"));
}

и файл index.xml:

<?xml version="1.0" encoding="UTF-8"?>
<page id="page1">
<layer id="layer1">
    <hook to="page1" edge="top" distance="10px" />
    <hook to="page1" edge="left" distance="10px" />
    <hook to="page1" edge="right" distance="10px" />
    <hook to="page1" edge="bottom" distance="10px" />
</layer>
</page>

Предупреждение, которое я вижу, содержит сообщение: null, что неверно,потому что документ получил элемент с id page1.
. В инспекторе Google Chrome у Doc есть единственный дочерний элемент с атрибутом id, установленным в page1.
Почему это не работает

1 Ответ

1 голос
/ 12 июля 2010

Это потому, что getElementById обычно работает только на html / xhtml. Вы можете обойти это, изменив свои данные так, чтобы они были в формате xhtml вместо простого XML, или могли бы попытаться добавить некоторые DTD XML в ваш файл, чтобы getElementById должен работать.

Что-то вроде:

<!ELEMENT page>
<!ATTLIST page id ID>

Проверьте здесь для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...