$ .getJSON не работает с локальным файлом JSON - PullRequest
2 голосов
/ 16 декабря 2011

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

Я получаю JSON с jQuery следующим образом:

$.getJSON(
 "lib/js/app.json",
     function(data){
        $.each(data, function(i,user){
        +'<img src="'+user.thumbnail+'"/>
        });
      }
);

И получите эту консольную ошибку:

XMLHttpRequest cannot load file://localhost/Users/blakestruhs/new/lib/js/app.json. Origin null is not allowed by Access-Control-Allow-Origin.

Я жажду ответа здесь. Пожалуйста, помогите мне.

Ответы [ 7 ]

1 голос
/ 04 февраля 2013

Chrome не позволяет выполнять ajax-вызовы в локальные файлы.См. Это

1 голос
/ 16 декабря 2011

JSON должен загружаться по протоколу HTTP, а не по протоколу локальных файлов.

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

либо настройте локальный веб-сервер, либо вместо этого сохраните свой JSON в переменной и вообще пропустите getJSON.

0 голосов
/ 03 декабря 2016

Вместо использования getJSON, для браузеров, которые его поддерживают (включая Chrome), вы можете использовать FileReader API.

var r = new FileReader();
r.onload = function(e) {
        var obj = JSON.parse(e.target.result);
        // do what you will with the object
}
// Start the async read
r.readAsText(file);

Обратите внимание, что файловая переменная должна быть объектом File или Blob.Самый простой способ получить его - позволить пользователю выбрать его из элемента ввода файла.Если вам нужно прочитать файл, не спрашивая пользователя, вы можете проверить: https://stackoverflow.com/a/30896068/2476389

0 голосов
/ 16 декабря 2011

Я думаю, что если вы обращаетесь к странице, которая вызывает getJSON с IP-адресом, тогда для файла json вместо IP-адреса используется IP-адрес вместо локального, фактически они принадлежат одному домену, и он должен работать

0 голосов
/ 16 декабря 2011

Я думаю, что вы используете браузер Webkit, как Chrome, верно? Чом не видит связи между двумя локальными файлами. Используйте Firefox или запустите его на веб-сервере;)

«Нулевой источник не разрешен Access-Control-Allow-Origin» в Chrome. Почему?

0 голосов
/ 16 декабря 2011

XmlHttpRequest не допускается для междоменных доменов.

Если вам нужно провести демонстрацию на локальном ПК, настройте ваше веб-приложение для запуска на локальном веб-сервере и сделайте так, чтобы источник json возвращался таким жевеб-приложение.

Это единственный способ заставить его работать.Вы не можете использовать Ajax-вызовы в файловой системе по соображениям безопасности.

0 голосов
/ 16 декабря 2011

Вы должны использовать http://localhost сверх file://localhost;

$.getJSON(
 "http://localhost/Users/blakestruhs/new/lib/js/app.json",
     function(data){
        $.each(data, function(i,user){
        +'<img src="'+user.thumbnail+'"/>
        });
      }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...