Reputation:
How do you return a serialized JSON object to the client side using ASP.NET MVC via an AJAX call?
Upvotes: 15
Views: 1859
Reputation: 360
You can also System.Web.Script.Serialization; as below
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) {
}
});
Upvotes: 1
Reputation: 743
This is the Small block of code for just understand , how we can use JsonResults in MVC Controllers.
public JsonResult ASD()
{
string aaa = "Hi There is a sample Json";
return Json(aaa);
}
Upvotes: 2
Reputation: 3307
If you need to send JSON in response to a GET, you'll need to explicitly allow the behavior by using JsonRequestBehavior.AllowGet.
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Upvotes: 0
Reputation: 41832
Depending on your syntax preferences, the following also works:
public ActionResult MyAction()
{
return Json(new {Data = myObject});
}
Upvotes: 10
Reputation: 779
From the controller you can just return a JsonResult:
public ActionResult MyAction()
{
... // Populate myObject
return new JsonResult{ Data = myObject };
}
The form of the Ajax call will depend on which library you're using, of course. Using jQuery it would be something like:
$.getJSON("/controllerName/MyAction", callbackFunction);
where the callbackFunction
takes a parameter which is the data from the XHR request.
Upvotes: 24