2013-03-15 128 views
0

從請求到服務器我返回401錯誤。爲什麼ajax安裝在這種情況下不起作用?

我想處理這個並適當地重定向用戶。

起初我試圖用ajaxSetup來捕獲錯誤並處理它,但是這並沒有被打到。

然後我改變它使用ajaxError方法,這個工程。

爲什麼當我使用ajaxSetup時不會碰到錯誤方法?

這工作:

$("body").ajaxError(
       function (e, request) { 
        if (request.status == 401) { 
         alert("Your session has expired. Please login again to continue."); 
         window.location = "/admin/account/logon"; 
        } 
       } 
      ); 

但是,這並不工作:

$.ajaxSetup({ 
     cache: false, 
     error: function (jqXHR, textStatus, errorThrow) { 
      if (jqXHR.status == 401) { 
       alert("Your session has expired. Please login again to continue."); 
       window.location = "/admin/account/logon"; 
      } 
     } 
    }); 

它使用jQuery不顯眼的Ajax觸發,鏈接如下:

<a title="Delete this comment" class="close " data-ajax="true" data-ajax-confirm="Are you sure you want to delete this comment?" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#Comments" href="/myurl">×</a> 
+0

使用$(document)而不是$(body)。另外,我不明白這個問題,您是否問過_why_jQuery語法是這樣工作的?你的ajax調用中的 – 2013-03-15 04:22:21

+0

是否註冊了更多的錯誤處理程序?分享你如何使ajax呼叫 – 2013-03-15 04:23:46

+0

我已經更新了問題和其他細節。 – shenku 2013-03-15 04:29:51

回答

3

From the documentation

Note: 
Global callback functions should be set with their respective global Ajax event handler methods— 
.ajaxStart(), 
.ajaxStop(), 
.ajaxComplete(), 
.ajaxError(), 
.ajaxSuccess(), 
.ajaxSend() 

—rather than within the options object for $.ajaxSetup(). 
+1

+1另外,我發現這張票:http://aspnet.codeplex.com/workitem/9742 – 2013-03-15 04:36:58

相關問題