Как вернуть сериализованный объект JSON на клиентскую сторону с помощью ASP.NET MVC через вызов AJAX?





Из контроллера вы можете просто вернуть JsonResult:
public ActionResult MyAction()
{
... // Populate myObject
return new JsonResult{ Data = myObject };
}
Форма вызова Ajax, конечно же, будет зависеть от того, какую библиотеку вы используете. Используя jQuery, это будет примерно так:
$.getJSON("/controllerName/MyAction", callbackFunction);
где callbackFunction принимает параметр, который является данными из запроса XHR.
В комментарии нет форматирования, но ... $ .getJSON ("/ controllerName / MyAction", {id: 7}, callbackFunction);
В зависимости от ваших синтаксических предпочтений также работает следующее:
public ActionResult MyAction()
{
return Json(new {Data = myObject});
}
Если вам нужно отправить JSON в ответ на GET, вам необходимо явно разрешить поведение с помощью JsonRequestBehavior.AllowGet.
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Это небольшой блок кода, чтобы просто понять, как мы можем использовать JsonResults в контроллерах MVC.
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.info(data)
},
error: function (request, status, error) {
}
});
Как бы вы передали параметры MyAction?