предупреждение" не сформировано " при загрузке JSON на стороне клиента в Firefox через jQuery.Аякс

Я использую метод ajax jQuery для получения статического файла JSON. Данные загружаются из локальной файловой системы, поэтому сервера нет, поэтому я не могу изменить тип MIME.

Это отлично работает в Safari, но Firefox (3.6.3) сообщает, что файл "не сформирован". Я знаю и рассмотрел аналогичный пост здесь в Stack Overflow:

ошибка" не сформирована " в Firefox При загрузке JSON-файла с помощью XMLHttpRequest

Я верю мой JSON хорошо сформирован:

{
    "_": ["appl", "goog", "yhoo", "vz", "t"]
}

мой вызов ajax прост:

$.ajax({
    url: 'data/tickers.json', 
    dataType: 'json',
    async: true,
    data: null,
    success: function(data, textStatus, request) {
        callback(data);
    }
});

Если я оберну JSON тегом документа:

<document>JSON data</document>

как упоминалось в другом вопросе переполнения стека, упомянутом выше, вызов ajax завершается с ошибкой синтаксического анализа.

Итак: есть ли способ избежать предупреждения Firefox при чтении в файлах JSON на стороне клиента?

2 ответов


иногда использование HTTP-сервера не является опцией, что может означать, что типы MIME не будут автоматически предоставляться для некоторых файлов. Адаптировано из ответа Питера Хоффмана для С помощью jQuery .Getjson Firefox 3 синтаксическая ошибка Undefined используйте этот код перед $.getJSON () звонки:

$.ajaxSetup({beforeSend: function(xhr){
  if (xhr.overrideMimeType)
  {
    xhr.overrideMimeType("application/json");
  }
}
});

или, если вы используете $.ajax ():

$.ajax({
  url: url,
  beforeSend: function(xhr){
    if (xhr.overrideMimeType)
    {
      xhr.overrideMimeType("application/json");
    }
  },
  dataType: 'json',
  data: data,
  success: callback
});

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