在使用REST时收到404错误后,允许代码执行继续

时间:2016-03-17 15:32:14

标签: javascript rest

我正在开发一个工具,允许用户输入一些ID,并检查数据库中是否存在这些ID。

编写代码是为了与SOLR数据库一起使用,所以如果ID不存在则没有问题。现在虽然我正在与CouchDB交谈,但如果ID不存在,该工具将不会产生任何结果并产生404错误:404(找不到对象)。

这是我的代码:

// ...

    function caller() {
        if (validIDs.length === 0) {
            promise.resolve();

            return;
        }

        var ID = validIDs.pop();
        var url = preURL + ID;
        var wrappedResult = {
            "ID": ID,
            "data": undefined
        };

        $.getJSON(url).done(function(data) {
            wrappedResult["data"] = data;
            caller();
        });

        wrappedResults.push(wrappedResult);
    }

    caller();

    return [promise, wrappedResults];
}

我尝试使用类似的东西:

$.getJSON({
    url: url,
    dataType: "json",
    success: function(data) {
        wrappedResult["data"] = data;
        myForEach();
        alert('success');
    },
    error: function(data) {
        alert('error');
    },
    complete: function(xhr, data) {
        if (xhr.status !== 0)
            alert('success');
        else
            alert('fail');
    }
});

但它没有用。 html不显示表,并在控制台中:404(找不到对象)

我查看了其他类似问题中提出的解决方案,但他们没有解决我的问题。

请问我的代码是否可以继续显示已接受ID的结果并指出无效ID?

1 个答案:

答案 0 :(得分:0)

jQuery Ajax 404 Handling没有回答我的问题。 什么解决了问题是使用     var jqXHR = $ .ajax({     url:url,     类型:“GET”,     }); 而不是     jqXHR.done(功能(数据){     .....}); 我用了     jqXHR.always(function(jqXHR,textStatus,errorThrown){     ........}); 控制台仍显示404(未找到对象),但代码未停止并且正在运行