Search code examples
c#jquery.netasp.net-mvc

JQuery Ajax Call towards ASP.NET MVC action method - "Internal Server Error ?"


I have a simple action method that taking 2 parameter but when I call it by using jQuery Ajax in the Chrome Developer tool and Network tab > Xhr > Request status Code : 500 Internal Server error....

I am trying to find out the actual error but I can't get it?

NOTE: when I throw a breakpoint at the actionMethod & when I click on a button the ajax call is issuing but during I can't get control and the breakpoint, so this means that the ajax call isn't reaching the action method as well.

ActionMethod:

[HttpPost]
public ActionResult LikePost(int userId, int entryId)
{
   return Content("User Id  Is  : " + userId + "Post Id  is : " + entryId);
}

jQuery:

jQuery.ajax({
    url: "@Url.Action("LikePost", "Home")",
    method: "POST",
    data: {
       "userId": CurrentButton.attr("data-UserId"),
       "entryId": CurrentButton.attr("data-entryId")
    },
    success: function () {
       console.log("Succeded");
    },
    error: function () {
       console.log("Failed.");
   }
});

I am stuck for the last 2+ hours... The actual scenario is little different in my project but the problem I am facing is exactly this one.


Solution

  • You use method POST then you need use only one variable on your server side action.

    You can create a class like it:

    public class User
    {
        public int UserId { get; set; }
        public int EntryId { get; set; }
    }
    

    After you need to change you MVC action:

    [HttpPost]
    public ActionResult LikePost(User user)
    {
        return Content("User Id  Is  : " + user.userId + "Post Id  is : " + user.entryId);
    }
    

    And send this data as JSON:

    var data = {
        userId: CurrentButton.attr("data-UserId"),
        entryId: CurrentButton.attr("data-entryId")
    };
    jQuery.ajax({
        url: "@Url.Action("LikePost", "Home")",
        method: "POST",
        data: JSON.stringify(data),
        success: function () {
           console.log("Succeded");
        },
        error: function () {
           console.log("Failed.");
       }
    });