นี่คือตัวอย่างบางส่วนที่แสดงให้เห็นถึงการตั้งค่าและตรวจจับการหมดเวลาในกระบวนทัศน์เก่าและใหม่ของ jQuery
Live Demo
สัญญากับ jQuery 1.8+
Promise.resolve(
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
})
).then(function(){
//do something
}).catch(function(e) {
if(e.statusText == 'timeout')
{
alert('Native Promise: Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery 1.8+
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
}).done(function(){
//do something
}).fail(function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery <= 1.7.2
$.ajax({
url: '/getData',
error: function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
},
success: function(){
//do something
},
timeout:3000 //3 second timeout
});
โปรดสังเกตว่าtextStatus param (หรือjqXHR.statusText ) จะแจ้งให้คุณทราบว่าเกิดข้อผิดพลาดอะไร สิ่งนี้อาจมีประโยชน์หากคุณต้องการทราบว่าความล้มเหลวเกิดจากการหมดเวลา
ข้อผิดพลาด (jqXHR, textStatus, errorThrown)
ฟังก์ชั่นที่จะเรียกว่าถ้าคำขอล้มเหลว ฟังก์ชั่นได้รับสามอาร์กิวเมนต์: วัตถุ jqXHR (ใน jQuery 1.4.x, XMLHttpRequest) สตริงที่อธิบายถึงประเภทของข้อผิดพลาดที่เกิดขึ้นและวัตถุข้อยกเว้นทางเลือกหากเกิดขึ้น ค่าที่เป็นไปได้สำหรับอาร์กิวเมนต์ที่สอง (นอกเหนือจาก null) คือ "หมดเวลา", "ข้อผิดพลาด", "ยกเลิก" และ "parsererror" เมื่อมีข้อผิดพลาด HTTP เกิดขึ้น errorThrown จะได้รับส่วนข้อความของสถานะ HTTP เช่น "Not Found" หรือ "Internal Server Error" ตั้งแต่ jQuery 1.5 การตั้งค่าข้อผิดพลาดสามารถยอมรับอาร์เรย์ของฟังก์ชันได้ ฟังก์ชั่นแต่ละอย่างจะถูกเรียกในทางกลับกัน หมายเหตุ: ตัวจัดการนี้ไม่ถูกเรียกใช้สำหรับสคริปต์ข้ามโดเมนและคำขอ JSONP
src: http://api.jquery.com/jQuery.ajax/
,
}