"плохо сформированное" предупреждение при загрузке JSON на стороне клиента в Firefox через jQuery.ajax
Я использую метод jQuery ajax для получения статического файла JSON. Данные загружаются из локальной файловой системы, поэтому нет сервера, поэтому я не могу изменить тип MIME.
Это отлично работает в Safari, но Firefox (3.6.3) сообщает, что файл "не правильно сформирован". Я знаю и рассмотрел аналогичную статью здесь, в разделе "Переполнение стека":
"неправильно сформированный" ошибка в 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 файлах?
Ответы
Ответ 1
Иногда использование HTTP-сервера не является вариантом, что может означать, что типы MIME не будут автоматически предоставлены для некоторых файлов. Адаптированный от Peter Hoffman ответ на 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
});
Ответ 2
Локальные файлы и скрипты не смешиваются. Слишком много средств безопасности браузера и других странностей. Если вы хотите проверить что-то, вы должны запустить свой материал через HTTP-сервер. Установка одной локально может быть хорошей идеей.