Как получить файл XML в виде XML (а не строки) с помощью Ajax в Prototype.js? - PullRequest
0 голосов
/ 10 сентября 2008

Этот код из Prototype.js . Я посмотрел, вероятно, 20 различных учебных пособий, и я не могу понять, почему это не работает. Я получаю нулевой ответ.

new Ajax.Request(/path/to / xml / file.xml, {
   method: "get",
   contentType: "application/xml",
   onSuccess: function(transport) {
      alert(transport.responseXML);
   }
});

Если я изменю responseXML на responseText, он выдаст мне XML-файл в виде строки. Это не страница PHP, обслуживающая XML, а настоящий файл XML, поэтому я знаю, что это не заголовки ответа.

Ответы [ 2 ]

3 голосов
/ 10 сентября 2008

Если transport.responseXML имеет значение NULL, но у вас есть значение для transport.responseText, тогда я считаю, что это потому, что это недопустимый файл XML.

Редактировать: Я просто заметил, что в нашем коде здесь всякий раз, когда мы запрашиваем XML-файл, мы устанавливаем тип содержимого 'text / xml'. Я понятия не имею, если это имеет значение или нет.

1 голос
/ 19 сентября 2012

Просто хочу поделиться своим днем, работая над проблемой, с нулевым результатом для responseXML ответов. Мои результаты были в точности такими, как описано в вопросе: responseText был заполнен файлом XML, responseXML был NULL. Поскольку я был полностью уверен, что мой файл имеет допустимый формат XML, ошибка должна быть где-то другой.

Как уже упоминалось в документации Prototype v1.7 , я установил тип содержимого на "application / xml" . Отправленный ответ был постоянно "text / html", несмотря ни на что.

Короче говоря, проблема, с которой я столкнулся, заключалась в том, что мой XML-файл имел окончание ". Gpx" , поскольку это де-факто стандарт для координат GPS. Коллекция MIME-типов моей локальной установки XAMPP Apache предусматривает только окончания "xml" и "xsl". После добавления «gpx» и перезапуска сервера программа работала нормально, как и должно быть.

В моем случае есть три решения:

1) отредактируйте файл "mime.types" в Apache. Используя установку XAMPP, вы можете найти ее в «C: \ xampp \ apache \ conf \ mime.types». Найдите запись «application / xml» и измените ее следующим образом:

application/xml xml xsl gpx

Не забудьте перезагрузить сервер!

2) добавьте MIME-тип в .htaccess соответствующей папки. Откройте или создайте файл .htaccess и добавьте следующую строку:

AddType application/xml xml xsl gpx

3) во время процесса загрузки измените тип файла на «xml» вместо того, что у вас есть

Надеюсь, я в безопасности какое-то время для одного из вас, ребята.

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