определить статус канала Json и достоверность данных с помощью Jquery - PullRequest
1 голос
/ 14 февраля 2010

это то, что у меня есть, если время ожидания запроса не возвращено.

$.getJSON(jsonUrl, function(data){
        /*here*/
        if (data.stat != "ok") { //checks if query was valid
            $('#content').html('content not available');
            return;
        }
        else {...Do Code...}
 });

Мой вопрос: могу ли я (и как) попросить Jquery повторить попытку еще 2 раза, если фид Json не возвращается, и если фид возвращается, как я могу проверить, соответствуют ли данные jsonсам по себе не является неисправным и имеет правильный синтаксис json.

Наконец, все ли после /*here*/ выполнить сразу после возвращается весь фид?

1 Ответ

1 голос
/ 14 февраля 2010

В соответствии с документацией , $.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*/ выполняется, как только сервер что-то возвращает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...