2011-02-08 46 views
2

//首先對不起4我的英語不好Jquery的AjaxError未被觸發,無法處理302或其他Ajax響應

我看過帖子的很多(很多很多!)關於這類問題在這裏和各地網絡,但沒有人幫助我。

我在我的網站上使用了許多jquery ajax請求,有時會得到一個JSON響應,有時只是爲了加載頁面內的php/html內容。

我做了一個通用的函數,用jQuery ajax方法發送表單,所有工作都很好,但現在我需要處理XHR對象的'狀態',因爲某些ajax請求需要通過身份驗證的用戶完成,而我必須解決會話超時的問題。

當會話超時時,XHR通常返回302狀態,因爲在ajax調用的頁面上我做了「header location xxx」。

的probleme是「簡單」:我不手柄302成功還是喜歡用jQuery ajaxError

這樣的狀態,我想使用jquery ajaxError函數來處理我的網站上所有的Ajax請求。 螢火告訴我302響應和位置時,我叫了頭位置的頁面,但jQuery的不處理這... :(

你能幫助我嗎?非常感謝

回答

0

更新到1.5的jQuery它允許做這樣的事情:

$.ajax({ 
    statusCode: {404: function() { 
    alert('page not found'); 
    } 
}); 
+0

看到我的編輯:) – 2011-02-09 10:13:47

0

感謝了很多,但...同樣的結果的jQuery 1.4.2,302(其次是200,因爲PHP的重定向OK)無法處理:(

我用一點「黑客」解決:

$.ajaxSetup({complete: onRequestCompleted}); 
    function onRequestCompleted(xhr,textStatus) { 
     if (xhr.status == 410) { 
      window.location.href = xhr.getResponseHeader("Location"); 
     } 
} 

而AJAX頁面加載我穿上:

header("Location:".FILENAME_LOGIN_SESSION_TIMEOUT, true, 410); 

它工作正常,但...這是一個好的做法呢?