How to Receive Ajax Data values from Controller in asp mvc

26,046

Your ActionResult is GET And you have no input parameter for your ActionResult so either change those or see below:

<script>
$('#inline-username').click(function () {
    var comments = $('#inline-username').val();
    //var selectedId = $('#hdnSelectedId').val();

    $.ajax({
        url: /ControllerName/ActionName
        dataType: "json",
        type: "GET", 
        contentType: 'application/json; charset=utf-8', //define a contentType of your request
        cache: false, 
        data: { test: comments  },
        success: function (data) {
            // data is your result from controller
            if (data.success) {
                alert(data.message);
            }
        },
        error: function (xhr) {
            alert('error');
        }
    });
});

Then within your controller:

public ActionResult UpdateOrder(string test)
    {
        // some code
        return Json(new { success = true, message = "Order updated successfully" }, JsonRequestBehavior.AllowGet);
    }

Update

Remember if you want to use POST then action you are calling has to be [HttpPost] like:

[HttpPost]
public ActionResult Example()

When there is no HTTP above your ActionResult Then Its By Default Get.

Share:
26,046
Mohammed AlAamri
Author by

Mohammed AlAamri

Updated on September 15, 2020

Comments

  • Mohammed AlAamri
    Mohammed AlAamri over 3 years

    using the following script, I am trying to access the variables being sent using data in the ajax function but I couldn't.

    <script>
    $('#inline-username').click(function () {
        var comments = $('#inline-username').val();
        //var selectedId = $('#hdnSelectedId').val();
    
        $.ajax({
            url: '@Url.Action("UpdateOrder")', // to get the right path to controller from TableRoutes of Asp.Net MVC
            dataType: "json", //to work with json format
            type: "POST", //to do a post request
            contentType: 'application/json; charset=utf-8', //define a contentType of your request
            cache: false, //avoid caching results
            data: { test: $(this).text() }, // here you can pass arguments to your request if you need
            success: function (data) {
                // data is your result from controller
                if (data.success) {
                    alert(data.message);
                }
            },
            error: function (xhr) {
                alert('error');
            }
        });
    });
    

    here is the action in the controller

    public ActionResult UpdateOrder()
        {
            // some code
            var test = Request.Form["test"];
            return Json(new { success = true, message = "Order updated successfully" }, JsonRequestBehavior.AllowGet);
        }
    

    I tried Request.Form["test"] but the value of it is null. how should I receive the objects of data?

  • Masoud Andalibi
    Masoud Andalibi almost 7 years
    @MohammedAlAamri Glad it did mate :)