Проблема с методом xmlHttp.send () - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь загрузить файл XML и получить его объект DOM. Я думаю, что ошибка с этим кодом:

// Takes an XML document and loads it and returns a DOM of the document
function loadXMLDoc(filepath)
{
    if (window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari
    {
        xmlhttp = new XMLHttpRequest();
    }
    else // code for IE6, IE5
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET", filepath, false);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;
    return xmlDoc;
}

Код останавливается при xmlhttp.send(). Я получаю следующее сообщение об ошибке:

XMLHttpRequest cannot load file://localhost/Users/Dylan/programming/projects/personalpage/resources/cool-data.xml. Cross origin requests are only supported for HTTP.
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101

Это подчеркивает линию xmlhttp.send(). У меня было это работает раньше, и я не думаю, что я внес какие-либо изменения в файл. Единственное различие, которое я знаю, состоит в том, что я сейчас выполняю это на моей локальной машине. До того, как я использовал IDE, размещенную в Интернете (cloud9), все файлы были удалены на веб-сервере. Кроме того, это работало на Windows, и теперь я на Mac.

Редактировать: я вызвал функцию с аргументом: "../resources/items-data.xml" и вся моя работа на моей локальной машине. Каталоги равного уровня: js, html, css и resources.

1 Ответ

0 голосов
/ 23 июня 2011

Вы можете использовать XHR локально (в file: origin), но есть одна загвоздка: Google Chrome и Firefox (я считаю) не позволит вам получить доступ к файлам, отличным от файлов в том же каталоге, где находится файл html.То есть

file://localhost/Users/Dylan/programming/projects/personalpage/index.htm

может иметь доступ

file://localhost/Users/Dylan/programming/projects/personalpage/abc.xml или file://localhost/Users/Dylan/programming/projects/personalpage/abc.json.js

, но не

file://localhost/Users/Dylan/programming/projects/personalpage/resources/cool-data.xmlили file://localhost/etc/passwd

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

PS В следующий раз сделайте всем одолжение, используя jQuery или другую библиотеку Javascript, а не изобретайте колесо.

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