Các tham số bắt buộc trong error
hàm Ajax là jqXHR, exception
và bạn có thể sử dụng nó như dưới đây:
$.ajax({
url: 'some_unknown_page.html',
success: function (response) {
$('#post').html(response.responseText);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
},
});
DEMO FIDDLE
Thông số
jqXHR:
Nó thực sự là một đối tượng lỗi trông như thế này
Bạn cũng có thể xem điều này trong bảng điều khiển trình duyệt của riêng bạn, bằng cách sử dụng console.log
bên trong error
chức năng như:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Chúng tôi đang sử dụng thuộc status
tính từ đối tượng này để lấy mã lỗi, như nếu chúng tôi nhận được trạng thái = 404, điều này có nghĩa là không thể tìm thấy trang được yêu cầu. Nó hoàn toàn không tồn tại. Dựa trên mã trạng thái đó, chúng tôi có thể chuyển hướng người dùng đến trang đăng nhập hoặc bất kỳ logic kinh doanh nào của chúng tôi yêu cầu.
ngoại lệ:
Đây là biến chuỗi hiển thị loại ngoại lệ. Vì vậy, nếu chúng tôi gặp lỗi 404, exception
văn bản sẽ chỉ là "lỗi". Tương tự, chúng tôi có thể nhận được 'thời gian chờ', 'hủy bỏ' như các văn bản ngoại lệ khác.
Thông báo khấu hao: Các jqXHR.success()
, jqXHR.error()
và các jqXHR.complete()
cuộc gọi lại bị phản đối kể từ jQuery 1.8. Để chuẩn bị mã của bạn để loại bỏ cuối cùng của họ, sử dụng jqXHR.done()
, jqXHR.fail()
và jqXHR.always()
để thay thế.
Vì vậy, trong trường hợp bạn đang sử dụng jQuery 1.8 trở lên, chúng tôi sẽ cần cập nhật logic hàm thành công và lỗi như: -
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
// success logic here
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
// Our error logic here
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
})
.always(function () {
alert("complete");
});
Hy vọng nó giúp!
dataType
không phải vậydatatype
.