предупреждение" не сформировано " при загрузке 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-сервер. Установка локально может быть хорошей идеей.