2011-01-07 7 views
0

になりません。そのため、ページにリンクがあり、コードが途切れることがあります。コードがExceptionをスローすると、私のコードがコントローラの "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文以上のことの振る舞いを変更した場合:

フロントエンドでは、実際にはlocalhostからJsonアイテムをダウンロードするかどうかを尋ねるポップアップダイアログが表示されますが、これ以上説明的なエラーはありません。

ここでは何が起こっていて、どうすれば解決できますか?

答えて

0

JSONを返すアクションは、AJAXを使用して呼び出す必要があります。サーバーがJSONを返すため、このアクションを指すページにリンクを設定するだけでは、ブラウザーはブラウザーで何を処理するのかわかりません。あなたはこのアクションを呼び出すために$.getJSON()メソッドを使用することができますjqueryのを使用しているのであれば、たとえば:

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

    私はあなたが記述しているシナリオが発生する可能性があるときについて考えることができる他の二つのケースがあります。あなたはこのコントローラーアクションを指し示すリンクを持っていますが、JavaScriptエラーがあり、ブラウザーは単にGETリクエストを送信するリンクをたどります

  • このコントローラーアクションを指すリンクをAJAXifiedしましたが、戻ってデフォルトアクションをキャンセルするのを忘れました.click()からの偽コールバックを送信し、ブラウザはGETリクエストを送信するリンクをたどります。
関連する問題