ยินดีต้อนรับสู่อนาคต!
ตอนนี้เรามีคุณสมบัติ "responseURL" จากวัตถุ xhr เย้!
ดูวิธีรับ URL การตอบสนองใน XMLHttpRequest?
อย่างไรก็ตาม jQuery (อย่างน้อย 1.7.1) ไม่ได้ให้การเข้าถึงวัตถุ XMLHttpRequest โดยตรง คุณสามารถใช้สิ่งนี้:
var xhr;
var _orgAjax = jQuery.ajaxSettings.xhr;
jQuery.ajaxSettings.xhr = function () {
xhr = _orgAjax();
return xhr;
};
jQuery.ajax('http://test.com', {
success: function(responseText) {
console.log('responseURL:', xhr.responseURL, 'responseText:', responseText);
}
});
ไม่ใช่วิธีแก้ปัญหาที่สะอาดและฉันคิดว่าทีม jQuery จะทำอะไรบางอย่างสำหรับ responseURL ในรุ่นต่อ ๆ ไป
เคล็ดลับ : เพียงเปรียบเทียบ URL เดิมกับ responseUrl หากเท่ากันจะไม่มีการเปลี่ยนเส้นทาง หาก "ไม่ได้กำหนด" แสดงว่าอาจไม่รองรับ responseUrl อย่างไรก็ตามตามที่ Nick Garvey กล่าวคำขอ AJAX ไม่เคยมีโอกาสที่จะไม่ทำตามการเปลี่ยนเส้นทาง แต่คุณสามารถแก้ไขงานได้หลายอย่างโดยใช้คุณสมบัติresponseUrl
xhr.getResponseHeader("content-type")
ขึ้นต้นด้วยtext/html
และมีคำหลักเช่น "เข้าสู่ระบบ" หรือไม่และแสดงข้อความ "เซสชันของคุณหมดเวลาแล้ว" หากจำเป็น แน่นอนว่านี่ไม่ใช่คำตอบ แต่เป็นวิธีแก้ปัญหา