2014-02-18 2 views
1

Я создаю образец веб-приложения на своей локальной машине. Я хочу сделать ajax-вызов файла .xml, который находится на моем локальном компьютере.Невозможно загрузить локальный файл .xml через JQuery ajax call

Он не работает ни в каких браузерах. Когда я пытаюсь увидеть на вкладке «Сеть» в Chrome, это отображает, что XMLHttpRequest cannot load file:///D:/somefolder/finishers.xml?_=1392713504397. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Поэтому исходный 'null' не допускается.

Возможно, это повторяющийся вопрос, но я новичок в JQuery. Ниже мой код.

$.ajax({ 
    url: "finishers.xml", 
    cache: false, 
    dataType: "xml", 
    success: function(xml){}  
}); 

Пожалуйста, помогите мне, как это решить. Спасибо заранее.

+0

Могу я узнать, какой браузер вы используете. Попробуйте последнюю версию firefox, чтобы проверить локальную проверку на веб-сервере. – Bala

ответ

2

Это потому, что вы запускаете код на локальном компьютере (без запуска под веб-сервером).

Поместите свой код под веб-сервер (например, apache) и повторите попытку.

+0

ДЛЯ КАЖДОГО В БУДУЩЕМ Чтение Глава Первый jQuery, по этой причине ваш файл finishers.xml не отображается на вкладке сети. Я запустил тот же файл на сервере WAMP и получил доступ к файлу с помощью localhost/ch8/index.html, и теперь он отображается на вкладке сети. –

1

Ошибка, которую вы получаете, не имеет ничего общего с созданным вами JavaScript, но имеет доступ к этим данным (также называется Cross-Origin Resource Sharing). Поскольку api (сервер) не знает вашего клиента, вам не разрешено использовать данные.

1) Решение состоит в том, чтобы сделать страницу, которую вы используете для вызова (web) api, находится в том же домене, что и ваш (веб) api. В этом случае они используют один и тот же домен и поэтому вам разрешено использовать одни и те же данные.

2) Еще одно решение (перекрестный домен) для вашей проблемы - информировать ваш сервер о своем домене и что ваш домен является допустимым доменом для использования данных. Я не знаю, какой язык вы используете для с (веб) API, но вы должны настроить конечную точку он возвращает заголовок с

"Access-Control-Allow-Origin: 'Your domain of the calling client here'" 

Чтобы попробовать, если это действительно ваша проблема, вы можете также попробовать это в качестве заголовка обратного

"Access-Control-Allow-Origin: *" 

ПРИМЕЧАНИЕ: Имейте в виду, что вы не будете использовать это в производстве, как вы на самом деле говорят, что каждый может использовать это (веб) API.

+0

Как вы уже упоминали в первом случае, если оба файла используют один и тот же домен, он должен позволить мне использовать данные. Вот почему я поставил этот вопрос. Все файлы files (html, .js, .xml) находятся в одной папке и но я не могу получить к нему доступ. – nakul

+0

Такая же папка не совпадает с одним и тем же доменом. Если у вас есть (web) api via, и вы получаете доступ к своему html-файлу через локальную папку (открытие с помощью щелчка dubble или что-то еще), то домены разные. Если у вас есть (web) api running (пример: http: // localhost/mywebapi), вам также необходимо получить доступ к вашему html-файлу таким же образом (http: //localhost/Mypage.html), чтобы сделать первый вариант работы. Я могу видеть в URL вашего сообщения, что вы открываете файл непосредственно с диска D. –

+0

Спасибо за информацию, он работает сейчас без веб-сервера. В IE и mozilla. – nakul

Смежные вопросы