如何使用状态代码200,404,300(如何完成jquery并在内部失败)

时间:2014-02-13 14:24:55

标签: javascript jquery

我通过使用jQuery学习了Ajax。我认为jQuery实现了使用状态代码,但对200,404和300等状态代码了解不多。

使用jQuery Ajax,其简单如下:

$.ajax({
    url: "update.php",
    type: "POST",
    data: customObj
})
.done(function( data ) {
    alert("data saved succesfully");
})
.fail(function( data ) {
    alert( "failed to update data" );
});

有人可以解释如何使用这些状态代码200,404和300.

3 个答案:

答案 0 :(得分:8)

如果你看一下$.ajax实现,你会发现这些代码行:

// Callback for when everything is done
function done(status, nativeStatusText, responses, headers) {

    ...

    // Determine if successful
    isSuccess = status >= 200 && status < 300 || status === 304;

    ...

    // Success/Error
    if (isSuccess) {
        deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
    } else {
        deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
    }

    ...
}

所以答案是200-300和304范围内的代码被认为是成功的,其他一切都是失败的。根据他们解决(donesuccess方法将被调用)或拒绝(fail)延迟对象。

答案 1 :(得分:6)

@dfsq所写的内容外,您还可以处理特定的状态代码:

$.ajax({
  statusCode: {
    404: function() {
      alert( "page not found" );
    }
  }
});

或延期:

$.ajax({
    url: "update.php",
    type: "POST",
    data: customObj
})
.fail(function( jqXHR, textStatus, errorThrown) {
    if (jqXHR.status == 403) {
        alert( "forbidden" );
    }
});

或:

$.ajax({
    url: "update.php",
    type: "POST",
})
.statusCode({
    401: function() { alert( 'Unauthorized' ); },
    200: function() { alert( 'OK!'); }
});

答案 2 :(得分:0)

如果您想知道哪些状态代码,请查看:

http://de.wikipedia.org/wiki/HTTP-Statuscode

jQuery会与那些人一起工作。