質問

AJAX 呼び出し経由で ASP.NET MVC を使用して、シリアル化された JSON オブジェクトをクライアント側に返すにはどうすればよいですか?

役に立ちましたか?

解決

コントローラーからは JsonResult を返すだけです。

public ActionResult MyAction()
{
    ... // Populate myObject
    return new JsonResult{ Data = myObject };
}

もちろん、Ajax 呼び出しの形式は、使用しているライブラリによって異なります。jQueryを使用すると次のようになります。

$.getJSON("/controllerName/MyAction", callbackFunction);

どこ callbackFunction XHR リクエストからのデータであるパラメータを受け取ります。

他のヒント

構文設定に応じて、以下も機能します。

public ActionResult MyAction()
{
    return Json(new {Data = myObject});
}

これは、MVC コントローラーで JsonResults を使用する方法を理解するための小さなコード ブロックです。

   public JsonResult ASD()
    {
    string aaa = "Hi There is a sample Json";
    return Json(aaa);
    }

System.Web.Script.Serialization も実行できます。以下のように

using System.Web.Script.Serialization;

public ActionResult MyAction(string myParam)
{

    return  new JavaScriptSerializer().Serialize(myObject);
}

アヤックス

$.ajax({
    type: 'POST',
    url: '@Url.Action("MyAction","MyMethod")',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ "myParam": "your data" }),
    success: function(data)
    {
        console.log(data)
    },
    error: function (request, status, error) {

    }
});

GET への応答として JSON を送信する必要がある場合は、JsonRequestBehavior.AllowGet を使用して動作を明示的に許可する必要があります。

public JsonResult Foo()
{
    return Json("Secrets", JsonRequestBehavior.AllowGet);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top