Ajax Парсинг Локальный XML - PullRequest
       2

Ajax Парсинг Локальный XML

0 голосов
/ 09 ноября 2010

Я создаю локальный html-файл для динамического отображения некоторых данных из XML-файла, и с помощью инспектора Chrome я решил, что мой XML-файл не анализируется, поскольку он «не размещен на веб-сервере»

XMLHttpRequest cannot load data.xml. Cross origin requests are only supported for HTTP.

Я знаю, что есть несколько флагов, которые я мог бы передать Chrome / веб-браузеру, чтобы обойти это ограничение, но я ищу какой-то альтернативный метод. Вероятно, мне придется распространить эти файлы среди нескольких человек, и я не буду учить их, как передавать флаги в браузер. Размещать их на веб-сервере тоже нельзя.

Заранее большое спасибо.

Ответы [ 5 ]

1 голос
/ 09 ноября 2010

Если вы желаете использовать библиотеку, вы можете использовать AJAX-метод jQuery для выполнения междоменного запроса (я не совсем уверен, что jQuery будет поддерживать то, что вы пытаетесь сделать),JSONP работает, но у вас есть данные XML ...

Вы все равно можете попробовать загрузить его в тег script и посмотреть, сможете ли вы получить значение innerHTML, не нарушая сценарий;Как только вы закончите получать текст, удалите скрипт со страницы.Возможно, вы сможете получить данные до того, как браузер попытается проанализировать сценарий, прикрепив события onload и onreadystatechange к элементу сценария.

var s = document.createElement('script');
s.src = '/path/to/file.xml';
s.onload = s.onreadystatechange = getData;
function getData(e)
{
  //get the text out of the script element
  //remove the event handler from the script element
  //remove the script from the page
}
document.getElementsByTagName('body')[0].appendChild(s);

Я не проверял его, но онможет сработать.

1 голос
/ 09 ноября 2010

Нет призрака, если вы не настроили локальный сервер или не разместили XML-файл локально.Ajax должен следовать той же политике происхождения .

0 голосов
/ 09 ноября 2010

Боюсь, что если Chrome предоставляет только те опции, которые вы не любите применять, ваше приложение и Chrome не сойдутся. Доступ через iframe & object тоже не работает, load () - метод createDocument не поддерживается chrome (если я предполагаю, что вы получили ту же ошибку).
Что бы вы ни пытались сделать, это будет обходить стороной ограничения chrome, что не может быть хорошим, потому что я думаю, что у них есть веские причины для установки этих ограничений.

0 голосов
/ 09 ноября 2010

Если нет веской причины иметь отдельный файл html и xml, вы можете просто поместить данные прямо в файл html.

0 голосов
/ 09 ноября 2010

Как насчет настройки локального веб-сервера? XAMPP должен быть прост в установке даже для новичка. Просто попросите их поместить ваши файлы в папку htdocs, запустить xampp и запустить сервер apache.

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