Pregunta
¿Cómo devolver un serializa un objeto JSON para el lado del cliente usando ASP.NET MVC a través de una llamada AJAX?
Solución
Desde el controlador sólo puede devolver un JsonResult:
public ActionResult MyAction()
{
... // Populate myObject
return new JsonResult{ Data = myObject };
}
La forma de la llamada Ajax dependerá de la biblioteca que estés utilizando, por supuesto.Usando jQuery sería algo como:
$.getJSON("/controllerName/MyAction", callbackFunction);
donde el callbackFunction
toma un parámetro que es el de los datos de la XHR solicitud.
Otros consejos
Dependiendo de su sintaxis de las preferencias, las siguientes obras:
public ActionResult MyAction()
{
return Json(new {Data = myObject});
}
Este es el Pequeño bloque de código sólo para entender , cómo podemos utilizar JsonResults en MVC Controladores.
public JsonResult ASD()
{
string aaa = "Hi There is a sample Json";
return Json(aaa);
}
También puede el Sistema.Web.Secuencia de comandos.La serialización;como a continuación
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 necesita enviar JSON en respuesta a un GET, deberá permitir explícitamente el comportamiento mediante el JsonRequestBehavior.AllowGet.
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}