ASP.NET における JsonRequestBehavior

Json メソッド (http://msdn.microsoft.com/ja-jp/library/dd504936.aspx) を利用してJSON形式のデータを返す場合、既定の挙動は “GET メソッドによるリクエストは禁止” である。(http://msdn.microsoft.com/ja-jp/library/system.web.mvc.jsonrequestbehavior.aspx)

一方、jQuery における $.getJson はGETメソッドによりデータを取得するため、$.getJson と ASP.NET MVC 側の Controller.Json の組み合わせではエラーが発生する。対策は以下の通り。

(1) GET メソッドを許可する

return Json(data, AllowGet);

と記述し、GETメソッドを許可する。たとえば、郵便番号から住所を検索するような、漏洩しても問題ないデータをJSONで提供しているケースではこの方法を利用する。
GETメソッドによるリクエストを禁止しているのは、 JSON Hijack の危険性があるからであり、個人情報など、JSONで提供している情報が漏洩すると問題になるような場合には利用するべきではない。( http://itpro.nikkeibp.co.jp/article/COLUMN/20080830/313785/ )

(2) POST メソッドを利用する$.ajax を利用する。

(今のところ未検証 おそらく http://blog.livedoor.jp/eeu/archives/55285644.html にあるような形式で呼び出すことになると想像している)

$(function() { $('#get_feed').click(function() { $.ajax({ scriptCharset: 'utf-8', type: "POST", url: '<%= Html.Action(...) %>.', data: { // 渡すデータを指定 }, success: function(json) { $.each(json.responseData.feed.entries, function() { // 処理を記述する }); }, dataType: 'json' }); }); });

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。