2012-04-25 16 views
0

在我們的項目中,我們爲各種操作製作了很多json回調函數。我會給你一個這樣的Ajax調用下面如何在asp.net mvc3 web應用程序中的json調用期間處理會話超時?

$.ajax({ 
    url: '../Controller1/Method1', 
    type: "POST", 
    data: "{'Id': '" + Id "'}", 
    dataType: "html", 
    contentType: "application/json; charset=utf-8", 
    success: function (result) { 
     $('#div').html(result); 
    }, error: function (s) { 
     ShowAlert(s.responseText); 
    } 
}); 

現在一個例子,當會話超時,如果我們正在一個JSON Ajax回調,那麼它是不是重定向到登錄頁面正確, 所以如何在json ajax回調期間處理會話超時,並且如果會話過期並且創建了ajax回調,它應該將我重定向到登錄頁面。

如何做到這一點?任何幫助(代碼示例,有用的鏈接)將非常感激。

+0

如果你能找回一個特定的錯誤信息,爲什麼你不能簡單地做一個'window.location = ;'? – Tejs 2012-04-25 17:20:10

+0

如果會話超時和ajax回調,然後我wan我的登錄頁面呈現。 – 2012-04-26 04:15:34

+0

您使用FormsAuthentication嗎?如果是這樣,未經身份驗證的請求發送到具有授權屬性的頁面的默認行爲是發出重定向到登錄頁面。這裏的問題是你的AJAX調用不知道你被重定向,內容將是登錄頁面。建議修改您的MVC項目以返回HTTP 401並讓您的AJAX調用吃掉401並顯示一些登錄框。 – 2012-04-26 04:24:41

回答

0

是12030一個http響應?爲什麼不返回或扔(取決於如果你在一個web-API或正常控制器):

返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);

然後在Ajax調用:

$.ajax({ 
    //......... 
    statusCode: { 
     408: function() { 
      console.log('Call timed out'); 
     } 
    } 
}); 

也許

+0

我編輯過我的問題,好心經過它。 – 2012-04-26 04:14:26

2

當AJAX調用時和會話超時特定 錯誤消息的回報,現在如果性反應是乾脆來具體的錯誤信息,那麼做一個window.location =

相關問題