2011-01-07 30 views
0

異常消息所以,我有我的網頁上,是造成一些代碼,斷開鏈接。該代碼會拋出一個異常,這會導致我的代碼跳到我的控制器上的「Catch」塊。 catch塊如下所示:返回JSON作爲一個ActionResult不會讓通過

catch (Exception e) 
{ 
    return Json(e.ToString()); 
} 

會發生什麼事是,我看到在前端這個錯誤:

This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet. 

現在,如果我改變上述return語句的行爲如下:

在前端,我實際上得到一個彈出式對話,詢問我是否想從本地主機下載Json項目,但我不會得到更具描述性的錯誤。

這到底是怎麼回事,如何解決?需要使用AJAX調用

回答

0

返回JSON的動作。如果您只是在您的頁面中指向此操作的鏈接,因爲服務器返回JSON,則瀏覽器不知道如何處理它。因此,例如,如果你正在使用jQuery你可以使用$.getJSON()方法來調用這個動作:

$(function() { 
    $.getJSON('<%= Url.Action("SomeAction") %>', { }, function(result) { 
     // do something with the result 
     alert(result); 
    }); 
}); 

還有另外兩種情況下,我能想到的時候可能會出現你所描述的情景:

  • 你支持Ajax指向這個控制器操作的鏈接,但你有一個JavaScript錯誤和瀏覽器簡單地跟隨鏈接發送一個GET請求
  • 你Ajax化的指向這個控制器操作的鏈接,但你忘了通過返回取消默認動作從您的.click()錯誤回調和瀏覽器簡單地跟隨鏈接發送一個GET請求
相關問題