В соответствии с документацией , $.getJSON
обычно завершается сбоем молча, если возвращается искаженный json:
Если в JSON есть синтаксическая ошибка
файл, запрос обычно не будет выполнен
молча. Избегайте частого ручного редактирования
данных JSON по этой причине.
Что касается повторной попытки запроса еще два раза, это должно сделать следующее:
function getJson() {
var json = (function () {
var json = null;
$.ajax({
'type': 'GET',
'async': false,
'global': false,
'url': '/some/url',
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json;
})();
return json;
}
var json = getJson();
if(json.stat != "ok") {
for(var i = 0; i < 2; i++) {
json = getJson();
if(json.stat == "ok") {
break;
}
}
}
if(json.stat != "ok") {
$('#content').html('content not available');
} else {
// do stuff with json
}
И да, все после /*here*/
выполняется, как только сервер что-то возвращает.