Синтаксическая ошибка jQuery getJSON в действительном JSON
У меня есть следующие действительные данные json
[
{
"title":"title1",
"value":12234
},
{
"title":"title2",
"value":"some text"
},
{
"title":"title3",
"value":"12qwerty234"
},
{
"title":"title4",
"value":123.5
}
]
Я использую jQuery для его загрузки. Вот код:
$(document).ready(function(){
$.getJSON("json.js", {},function(result){
$.each(result, function(i, obj) {
$("form").append($('<label for="'+i+'">'+obj.title+'</label>'));
$("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>'));
});
});
});
Моя проблема в том, что я получаю синтаксическую ошибку в Firefox. Я загружаю json.json
в качестве локального файла.
Вот скриншот (ошибка говорит "синтаксическая ошибка в строке 1" ) ![enter image description here]()
Обратите внимание: эта форма успешно сгенерирована.
Изменить:
Вот еще один снимок экрана из Chrome при запуске python SimpleHTTPServer
:
![enter image description here]()
Ответы
Ответ 1
Причина этого в том, что вы используете локальный файл, поэтому подразумевается тип mime "text/xml", и, следовательно, Firefox попытается проанализировать его как XML в .responseXML
базового объекта XHR. Это, конечно, не удается.
Вы можете просто проигнорировать это или указать mimeType
самостоятельно:
$.ajax({
dataType: "json",
url: "json.json",
mimeType: "application/json",
success: function(result){
$.each(result, function(i, obj) {
$("form").append($('<label for="'+i+'">'+obj.title+'</label>'));
$("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>'));
});
}
});
PS: Используя простой XHR, вы бы использовали overrideMimeType()
Ответ 2
Я запустил тот же код на веб-сервере, и не возникла синтаксическая ошибка. Хотя он генерирует синтаксическую ошибку при загрузке из файла:///. SO, это в основном "схема".
Ответ 3
Я думаю, ошибка, созданная из-за json файла, является локальным файлом. Попробуйте загрузить ваш веб-сервер, например nginx или apache.