在ajax請求中,如果伺服器端的回應是302 Found,在ajax的回呼函數中能夠取得這個狀態碼嗎?能夠從Response Headers中得到Location的值進行重定向嗎?讓我們來一起看看實際情況。
使用jquery的$.ajax()啟動ajax請求的javascript程式碼如下:
在ajax的complete()與error()回呼函數中得到的狀態碼都是404,而不是302。
這是為什麼呢?
複製碼🎜>You can't handle redirects with XHR callbacks because the browser takes care of them automatically. You will only get back what at the redirected location.
jax -> browser -> server -> 302 -> browser(redirect) -> server -> browser -> ajax callback而在我們的測試程序中,由於302返回的重定向URL在伺服器上沒有對應的處理程序,所以在ajax回呼函數中得到的是404狀態碼;如果存在對應的URL,得到的狀態碼就是200。
所以,如果你想在ajax請求中根據302回應透過location.href進行重定向是不可行的。
type: 'post', data: data,
data: ' > success: function (data) { if (data.status == 302) {
}