cdn
cdn

Reputation: 664

How to call a function in another MVC controller using AJAX in Jquery

My folder structure looks like this. Both of these folders are contained within the Area folder.

Folder structure

I am trying to call a function from the EmailController inside ITRequests/Scripts/Edit.js and it fails to find it. The .js code look likes this

$(document).on('change', '#StatusId', function (event) {
    event.preventDefault();
    debugger;
    if(( $('#OldStatus').val() ) != ( $('#StatusId').val()) ) //Aka if the user switched the status on submit
    {
        var status_description = [$('#OldStatus').val(), $('#StatusId').val()];
        $.ajax({
            url: "/Email/Email/statusChangeEmail",
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ 'request': $('#RequestId').val(), 'status_descriptions': status_description }),
            done: function (data) {
                debugger;
                alert("working");
            }
        })
    }
})

RequestId is a hidden value on the page which is being picked up correctly, likewise the status_description field is taking the correct values and (tries to) pass them to the function. The function EmailController.cs is defined as such

[HttpPost]
    public ActionResult statusChangeEmail(int request, string[] status_descriptions)
    {
         //stuff happens
         return Json(1);
    }

However every time this happens I get this error messageenter image description here

Upvotes: 1

Views: 273

Answers (1)

Francisco Goldenstein
Francisco Goldenstein

Reputation: 13767

Why your URL is /Email/Email/statusChangeEmail? It should be /Email/statusChangeEmail.

The /Email means EmailController and /statusChangeEmail means controller action statusChangeEmail .

Upvotes: 1

Related Questions