使用Jquery确定Json提要状态和数据有效性

时间:2010-02-14 17:17:04

标签: javascript jquery ajax json validation

这是我目前所拥有的,如果请求超时则没有返回消息。

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

我的问题是,如果没有返回Json提要,我可以(以及如何)请求Jquery重试多达2次,如果返回了feed,我如何检查json数据本身是否没有错误正确的json语法。

在返回完整的Feed之后,最后在/*here*/执行之后执行所有操作吗?

1 个答案:

答案 0 :(得分:1)

根据documentation,如果返回格式错误的json,$.getJSON通常会无声地失败:

  

如果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*/之后的所有内容。