如何在jquery中处理来自ajax请求的204响应

时间:2015-05-12 16:54:54

标签: javascript jquery ajax http-status-codes jqxhr

我正在尝试处理Status: HTTP/1.1 204 No Content错误。我正在使用.fail()来处理所有其他错误,但此函数不处理204。尝试if (jqXHR.status == "204") {alert("error!");}时,收到204时不会抛出提醒。

$.ajax({
    url: url,
    method: 'GET',
    headers: {
        "Authorization": bearerToken
    },
}).then(function(response) {
    var obj = response;
    $("#imageid").css("border-color", "#ccc");
    $(".search-results").empty();
    for (var property in obj.entity.entries) {
        if (obj.entity.entries.hasOwnProperty(property)) {
            $(".search-results").append($("<li><a href='" + obj.entity.entries[property].uri + "' target='_blank'><div class='thumbnail'><img width='30' height='30' src='" + obj.entity.entries[property].uri + "' target='_blank'/></img><div class='caption'><p>" + obj.entity.entries[property].orientation + "</p></div></a></li>"));
        }
    }
    //$(".search-results").append("<div class='caption'>" + data.id + "</div><div class='thumbnail'><img width='40' height='40' src='" + data.thumbnailUrl + "'/></img>").css("float", "left");
}).fail(function(data, jqXHR) {
    if (jqXHR.status == "204") {
        $(".search-results").empty();
        $(".search-results").append("<p class='alert alert-danger'>Invalid ID</p>");
        $("#imageid").css("border-color", "red");
    }
    $(".search-results").empty();
    $(".search-results").append("<p class='alert alert-danger'>Invalid ID</p>");
    $("#imageid").css("border-color", "red");
});

1 个答案:

答案 0 :(得分:4)

2xx被视为成功。你的成功函数应该被调用。检查那里的状态代码。

jqXHR是成功回调的第三个参数。

编辑:此处的代码

then(function(data, responseText, jqXHR) {
  if(jqXHR.status == 204) alert('no content')
})