Не удалось загрузить файл с помощью jQuery

0

Вот фрагмент кода, с которым я играю:

$.get('http://www51.zippyshare.com/d/70229620/44835/data.json', function (data) {
console.log(data);
}).fail(function () {
console.log('I failed to download json')
});

К сожалению, каждый раз, когда он не может загрузить этот файл и регистрирует сообщение.

Почему он не загружает этот файл?

  • 0
    Междоменная политика? Что если вы попробуете JSONP?
  • 0
    Какой у тебя точный вопрос? Вы не хотите регистрировать сообщение, если оно терпит неудачу?
Показать ещё 3 комментария
Теги:

1 ответ

1
Лучший ответ

Это связано с междоменными запросами. В некоторых браузерах безопасность устанавливается на уровень, на котором JSON (или другие файлы) не могут быть получены с помощью javascript, если целевой файл находится в другом домене в качестве домена, в котором вы сейчас находитесь. В chrome я получаю следующую ошибку:

XMLHttpRequest cannot load http://www51.zippyshare.com/d/70229620/44835/data.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://xxx.xxx.xxx.xxx' is therefore not allowed access.

Способ обойти это с помощью JSONP, который разработан, чтобы избежать этой проблемы. Тем не менее, вам нужен контроль над выходом запрошенного файла. Таким образом, в вашем случае (получение json файла из zippyshare) это может стать очень сложным, если этот файл является динамическим.

Вот небольшой пример JSONP:

$.ajax({
   type: 'GET',
    url: "http://www51.zippyshare.com/d/70229620/44835/data.json",
    async: false,
    jsonpCallback: 'jsonCallback',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
       console.log(json.data);
    },
    error: function(e) {
       console.log(e.message);
    }
});

Важно, чтобы содержимое data.json теперь было включено в вызов функции, например:

jsonCallback(
  {
    "data": "value"
  }
);

Более подробную информацию и пояснения можно найти здесь: http://www.jquery4u.com/json/jsonp-examples/

  • 0
    Slick! Спасибо за код. Я приму этот ответ. Один вопрос: перед регистрацией данных в консоли он выводит следующее: Ресурс интерпретируется как Script, но передается с помощью приложения MIME типа / x-download: " www34.zippyshare.com/d/23896885/6013/… " . Что это такое?
  • 0
    Нет проблем! Это означает, что заголовки, отправленные для файла, были application/x-download но исполняющий скрипт рассматривает его как нечто другое. Запрос ajax фактически добавляет теги script в раздел HEAD HTML-документа. Поскольку тег script встречает странный mime-тип в запрошенном файле, браузер выдает предупреждение. Это не должно быть настолько важно, я не думаю, что вы можете изменить заголовки, отправленные zippy anway ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню