Невозможно проанализировать XML DOM (из файла) с помощью сценария Java - PullRequest
0 голосов
/ 23 июля 2011

Я недавно начал сталкиваться с проблемами с JavaScript, когда я пытаюсь загрузить теги элементов из отдельного XML-файла в HTML-документ. Я знаю, что правильно включил XMLHttpRequest или activeX (в зависимости от интернет-браузера), но у меня возникают проблемы с получением XML-файла и открытием его для доступа к его тегам. Чтобы открыть файл, я попытался использовать:

xhttp.open("GET",filepath,false);
xhttp.send();
xmlDoc=xhttp.responseXML;

код, кажется, проходит через первую строку, но он срабатывает во второй. Мне интересно, сможет ли кто-нибудь прояснить функцию .send (), и могут ли права доступа к серверу быть ошибочными; IE 7/8 сообщает мне «доступ запрещен» при запуске этого блока кода.

1 Ответ

2 голосов
/ 23 июля 2011

Убедитесь, что запросы ajax отправляются в тот же домен из ресурсов, к которым был получен доступ.

Взяв здесь пример кода,

xhttp.open("GET",filepath,false);
xhttp.send();

Вы запросили ресурс с HTTP-методом GET. Этот запрос будет запущен только после вызова метода send () для объекта XHR в соответствии со спецификацией [ 1 ]. Аргументы для send () будут игнорироваться, если метод GET.

Теперь, когда объект xhr создан, он проходит через различные состояния [ 2 ], такие как

  • UNSENT (числовое значение 0)
  • ОТКРЫТО (числовое значение 1)
  • HEADERS_RECEIVED (числовое значение 2)
  • ЗАГРУЗКА (числовое значение 3)
  • DONE (числовое значение 4)

В момент запуска запроса (т. Е. Вызывается send ()) объект xhr будет иметь состояние ОТКРЫТО.

Теперь, если мы посмотрим на 3-ю строку вашего кода "xmlDoc = xhttp.responseXML;", совершенно неясно, в каком состоянии вы пытаетесь прочитать содержимое. Лучший способ прочитать содержимое, когда состояние достигает 4 или ВЫПОЛНЕНО

Просто измените ваш код, как указано ниже:

 var xhr = new XMLHttpRequest();
    xhr.open("GET", somefilepath, true);
    xhr.send();
    xhr.onreadystatechange = function() {
     if(this.readyState == 4) {
      xmlDoc=xhr.responseXML;
     }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...