พารามิเตอร์ที่ต้องการในerror
ฟังก์ชันAjax คือjqXHR, exception
และคุณสามารถใช้ได้ดังนี้:
$.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);
},
});
สาธิต FIDDLE
พารามิเตอร์
jqXHR:
มันเป็นวัตถุข้อผิดพลาดซึ่งมีลักษณะเช่นนี้
คุณยังสามารถดูสิ่งนี้ได้ในคอนโซลเบราว์เซอร์ของคุณเองโดยใช้console.log
ภายในerror
ฟังก์ชันเช่น:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
เรากำลังใช้status
คุณสมบัติจากวัตถุนี้เพื่อรับรหัสข้อผิดพลาดเช่นถ้าเราได้รับ status = 404 หมายความว่าไม่พบหน้าที่ร้องขอ มันไม่มีอยู่เลย จากรหัสสถานะนั้นเราสามารถเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าเข้าสู่ระบบหรือสิ่งที่ตรรกะทางธุรกิจของเราต้องการ
ยกเว้น:
นี่คือตัวแปรสตริงที่แสดงประเภทข้อยกเว้น ดังนั้นหากเราได้รับข้อผิดพลาด 404 exception
ข้อความจะเป็นเพียง 'ข้อผิดพลาด' ในทำนองเดียวกันเราอาจได้รับ "หมดเวลา" "ยกเลิก" เป็นข้อความยกเว้นอื่น ๆ
การเลิกประกาศ:jqXHR.success()
, jqXHR.error()
และjqXHR.complete()
เรียกกลับจะถูกเลิกใช้เมื่อ jQuery 1.8 เพื่อเตรียมความพร้อมรหัสของคุณสำหรับการกำจัดของพวกเขาในที่สุดการใช้งานjqXHR.done()
, jqXHR.fail()
และjqXHR.always()
แทน
ดังนั้นในกรณีที่คุณใช้jQuery 1.8 ขึ้นไปเราจะต้องอัปเดตตรรกะของฟังก์ชันความสำเร็จและข้อผิดพลาดเช่น: -
// 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");
});
หวังว่าจะช่วยได้!
dataType
datatype