MexicoBoy
MexicoBoy

Reputation: 47

Ajax data not passing to controller

I have a problem where the data in the ajax isn't passing the sessionStorage item. I have tried using JSON.stringify and added contentType: 'application/json' but still it's not passing. Can this be done using POST method? Also, I have debugged and returned those sessionStorages, hence the problem isn't because the sessionStorge doesn't contain data.

Here my function:

    function functionA() {
        $.ajax({
            url: URLToApi,
            method: 'POST',
            headers: {
                sessionStorage.getItem('token')
            },
            data: {
                access_token: sessionStorage.getItem('pageToken'),
                message: $('#comment').val(),
                id: sessionStorage.getItem('pageId')
            },
            success: function () {
                $('#success').text('It has been added!"');
            },
        });
    }

Upvotes: 0

Views: 1508

Answers (2)

MexicoBoy
MexicoBoy

Reputation: 47

The solution to this problem has been found. The issue was the sessionStorage, hence I've passed it directly to the URL and now it working as follows:

   function functionA() {
    $.ajax({
        url: 'http://localhost:#####/api?id=' + sessionStorage.getItem('pageId') + '&access_token=' + sessionStorage.getItem('pageToken') + '&message=' + $('#comment').val(),
        method: 'POST',
        headers: {
            sessionStorage.getItem('token')
        },
        success: function () {
            $('#success').text('It has been added!"');
        },
    });
}

Upvotes: 0

Parth Mehta
Parth Mehta

Reputation: 64

Check below things in Controller's action that

  1. there should be a matching action in controller
  2. name of parameter should be same as you are passing in data in ajax

  3. Method type should be same the ajax POST of the action in controller.

 function AddPayment(id, amount) {
        var type = $("#paymenttype").val();
        var note = $("#note").val();
        var payingamount = $("#amount").val();
        $('#addPayment').preloader();
        $.ajax({
            type: "POST",
            url: "/Fixed/AddPayment",
            data: {
                id: id,
                amount: payingamount,
                type: type,
                note: note
            },
            success: function (data) {
                
            }
        });

    }

enter image description here

Here is the working code from my side. Check with this, and for the header part you need to get it from the Request in action

Upvotes: 1

Related Questions