Make an AJAX request using $.ajax in MVC 4

ajax, asp.net-mvc, asp.net-mvc-4, razor

Solution

You just need to make it an `ActionResult`. Also, if you're using an Ajax POST, then the action needs to be marked with the `HttpPost` attribute. Try this:

[HttpPost]
public ActionResult test(string dealerID)
{
    return Content("It works");
}

Edit Actually, there are a few other problems with the syntax.

- `Url.Action` has the controller/action parameters in the wrong order -- should be "ActionName" first, then "ControllerName"

- For `Url.Action`, if the controller class is "HomeController", then you need just "Home"

- The JQuery options syntax is wrong -- should be `success: function(data) {}`.

$.ajax({
    url: '@Url.Action("test", "Home")',
    data: {dealerID: dealerID},
    type: 'POST',
    success: function(data) {
        alert(data);
    }
});

Problem

I am trying to make an AJAX request using $.ajax in MVC 4 with Razor. I'm not sure how to implement it. Using this video I was able to successfully make a link-driven call that returned data, but I can't seem to do the same thing from inside a jquery function. I can't seem to find any basic examples of how to do this. This is what I am working with: HomeController.cs ``` public string test(){ return "It works"; } ``` View.cshtml ``` function inventory(dealerID) { $.ajax({ url: '@Url.Action("HomeController","test")', data: {dealerID: dealerID}, type: 'POST', success: function(data) { process(data); } }); } ```

Original source