2011-12-14 38 views
7

Tôi có chức năng trình bao được sử dụng để gửi yêu cầu đến máy chủ, tôi cần thực hiện điều gì đó cụ thể nếu máy chủ trả về mã 401 và tôi không chắc chắn cách nhận dữ liệu nàyLàm cách nào để nhận mã phản hồi lỗi HTTP trong Jquery POST

$.mobile.showPageLoadingMsg();  
$.post(apiUrl+method,p,function(d) { 

    $.mobile.hidePageLoadingMsg(); 
    console.log(d.success); 
    console.log(d.message); 

    if(d.success == true){ 
     window[callback](d.data); 
    } 
    else{ 
     if(d.message != null){ 
      alert(d.message); 
     } 
    } 
},'json') 
.error(function() { 
    //need to check for 401 status here to do something 
    $.mobile.hidePageLoadingMsg(); 
    alert("error"); 
}); 

Nếu mã phía máy chủ của tôi ném ngoại lệ 401, hàm jquery .error sẽ chọn này chỉ vì không phải 200 OK nhưng tôi cần kiểm tra xem mã 401 của nó có phải là mã không.

+0

=== không ==, như thông minh cho! ==! = :) – Sam

Trả lời

11

Trong gọi lại error, hãy kiểm tra xhr.status trong đó xhr là đối số đầu tiên của hàm.

0

Cập nhật vào phương pháp "lời hứa": như jQuery 1.5 chúng ta có thể gọi là lời hứa .fail() và lấy mã tình trạng như thế này:

$.post("example.php", function() { 
    alert("success"); 
}).fail(function(xhr) { 
    console.log(xhr.status); 
}); 

Lưu ý rằng .error() hứa hẹn là loại bỏ như của jQuery 3.0

Các vấn đề liên quan