Đối tượng jqXHR được trả về bởi $ .ajax() như của jQuery 1.5 triển khai giao diện Promise. Đối số thứ ba trong hàm đã hoàn thành là một đối tượng jqXHR. Đối tượng này có thuộc tính cho mã trạng thái http của kết quả.
jqXHR.done (hàm (dữ liệu, textStatus, jqXHR) {}); Thay thế xây dựng tùy chọn gọi lại thành công, phương thức .done() thay thế phương thức jqXHR.success() không dùng nữa. Tham khảo deferred.done() cho chi tiết triển khai. link
$.ajax({
url: "http://fiddle.jshell.net/favicon.png",
beforeSend: function (xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
}).done(function (data, textStatus, jqXHR) {
console.log(jqXHR.status); //handle your 204 or other status codes here
});
Fiddle http://jsfiddle.net/puleos/fVa7X/
Giả sử bạn muốn đối xử với tất cả 200 mã trạng thái phi như một lỗi bạn có thể làm một cái gì đó như thế này:
var p = $.ajax({
url: "http://fiddle.jshell.net/favicon.png",
beforeSend: function (xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
});
p.done(function(data, textStatus, jqXHR) {
if(jqXHR.status !== 200) {
handleError(jqXHR.status);
return;
}
// Normal processing here
});
p.fail(function(jqXHR, textStatus) {
handleError(jqXHR.status);
});
Nguồn
2013-04-25 16:30:05
bạn có thể giải thích cho tôi phương pháp jqXHR.done bằng bất kỳ ví dụ nào không? làm cách nào để xử lý mã trạng thái? –
Tôi đã cung cấp một fiddle cho thấy cách bạn có thể kiểm tra mã trạng thái. Cách bạn xử lý nó phụ thuộc vào ngữ cảnh của ứng dụng bạn đang xây dựng. –
Phương thức thực hiện ở trên có chỉ xử lý phương thức jqXHR.success() không được chấp nhận? Để xử lý lỗi, tôi có cần tạo phương thức riêng không? Bcoz Tôi đã cố gắng để chơi xung quanh jsfiddle bằng cách thay đổi URL và nó không xử lý mã lỗi! –