I used this below code on my asp.net controller to return Json object on my Ajax on javascript
public JsonResult myMethod()
{
// return a Json Object, you could define a new class
return Json(new
{
Success = true, //error
Message = "Success" //return exception
});
}
Jquery-Ajax:
$.ajax({
type: "POST",
url: url_ ,
data: search,
success: function(data) {
//Show Json Properties from Controller ( If Success == false show exception Message from controller )
if (data.Success)
{
alert(data.Message); //display success
}
else
{
alert(data.Message) //display exception
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("error: " + XMLHttpRequest.responseText);
},
dataType: 'json'
});
How can this be done on Web Api Controller?
Can you give me some examples or url as reference.
Thanks and Regards
If you create yourself a new HttpContent class for delivering JSON, like...
Then you can do,
just like you do with JsonResult.
ASP.NET Web API works with a little bit different philosophy. You should return just an entity (or set of entities) and it is up to content negotiation mechanism to return it to the client in the format which he has requested. You can read more about content negotiation here:
You can of course bypass the content negiotiation by returning a
HttpResponseMessage
. In this case yo need to serialize the object into JSON yourself (basics of this approach are also described in the article mentioned above).After reading tpeczek's answer, Darrel Miller's answer, and their comment conversation in tpeczek's answer, I wanted get more guidance about when or why I might want to use Web Api and its content negotiation mechanism. tpeczek's link is informative and useful, but I found a couple other write-ups that were more geared at comparing the use of Web Api (and its content negotiation) with, say, plain MVC 4 controller actions that return
JsonResult
. Here are the ones that I found useful to making such a decision. One of the author concludes that he prefers using plain MVC 4 controllers while the other author prefers using Web Api controllers:Building a Public HTTP API for Data
I believe there is one correction needed in the above author's post. In there he mentions that,
According to this answer, you can indeed have multiple 'Get' methods in the same controller if you specify an
ActionName
attribute. Now here's the second post:ASP.NET Web API vs. ASP.NET MVC “APIs”