Question

Comment renvoyer un objet JSON sérialisé du côté client à l'aide d'ASP.NET MVC via un appel AJAX?

Était-ce utile?

La solution

Depuis le contrôleur, vous pouvez simplement renvoyer un JsonResult:

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

La forme de l’appel Ajax dépendra bien entendu de la bibliothèque que vous utilisez. En utilisant jQuery, ce serait quelque chose comme:

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

où la callbackFunction prend un paramètre correspondant aux données de la requête XHR.

Autres conseils

En fonction de vos préférences de syntaxe, les éléments suivants fonctionnent également:

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

Ceci est le petit bloc de code destiné à comprendre comment nous pouvons utiliser JsonResults dans les contrôleurs MVC.

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

Vous pouvez également System.Web.Script.Serialization; comme ci-dessous

using System.Web.Script.Serialization;

public ActionResult MyAction(string myParam)
{

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

Ajax

$.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) {

    }
});

Si vous devez envoyer du JSON en réponse à une requête GET, vous devez explicitement autoriser ce comportement en utilisant JsonRequestBehavior.AllowGet.

public JsonResult Foo()
{
    return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top