2011-10-03 33 views
1

正如標題所說,我想從XMLHttpRequest中檢索我的Json數據值。我已經知道如何通過使用共同的成功$ .Ajax成功事件來做到這一點,但我想從錯誤事件中獲取它的值。我注意到的事情並不是簡單地找到各種XMLHttpRequest類型。

稍後再解釋一下,以下是這種情況:經過一些不活動之後,用戶會話過期。如果他嘗試使用Ajax調用進行任何操作,他將被重定向到登錄頁面。我在實現OnException方法的特定過濾器上處理此會話超時錯誤。

雖然我可以使用一種破解(通過手動設置HTTP響應代碼)來做到這一點,但我想以「正確的方式」做到這一點,而沒有任何黑客行爲。

onException的方法的代碼片段

filterContext.ExceptionHandled = true; 

     // If this is an ajax request, return the exception in the response 
     if (filterContext.HttpContext.Request.IsAjaxRequest()) 
     { 
      //If the session has expired, throws a SESSION TIMEOUT error 
      if (Session["UserLogged"] == null) 
      { 
       //The hack mentioned before 
       filterContext.HttpContext.Response.StatusCode = 502; 
       filterContext.Result = new JsonResult() 
       { 
        Data = new { success = false, errorType = "SESSION_TIMEOUT" ,error = filterContext.Exception.ToString() }, 
        JsonRequestBehavior = JsonRequestBehavior.AllowGet 
       }; 
      } 

}

因此,通過使用簡單的$就錯誤事件,如何將我retrive從filterContext.Result的數據?具體爲errorType參數。

回答

1

您應該能夠從錯誤處理程序中的jqXHR responseText屬性中解析出JSON數據。

error: function(jqXHR, textStatus, errorThrown) { 
      alert('jqXHR.responseText = ' + jqXHR.responseText); 
     } 
+0

你能舉個例子嗎? – AdrianoRR

+0

添加要回答的示例。從那裏你將需要解析json數據的響應。我不確定格式是什麼。 – BNL

+0

是的,你說得對。我只是一個簡單的解析示例,將答案轉換爲完整答案。不過謝謝! – AdrianoRR