Dofs
Dofs

Reputation: 19217

Asp.Net Mvc JQuery ajax input parameters are null

I am trying to post some data with jQuery Ajax, but the parameters in my Ajax method are null.

This is simple test to send data:

 var dataPost = { titel: 'titel', message: 'msg', tagIds: 'hello' };
        jQuery.ajax({
            type: "POST",
            url: "Create",
            contentType: 'application/json; charset=utf-8',
            data: $.toJSON(dataPost),
            dataType: "json",
            success: function(result) {
                alert("Data Returned: ");
            }
        });

And my Ajax method looks like this:

[HttpPost]
public ActionResult Create(string title, string message, string tagIds)
{... }

There is something basic wrong with the data I send, but I can't figure out what. All the time the title, message and tagIds are null, so there is something wrong with the encoding, I just don't know what.

Optimally the parameter tagIds should be an array or list of guids.

Note: The jQuery.toJSON is this plugin

Upvotes: 6

Views: 18532

Answers (2)

Wen
Wen

Reputation: 26

We don't need the contentType: 'application/json; charset=utf-8', and $.toJSON

Here is the code makes me happy!

 $(function () {
        $("#btnSumbit").click(function () {
            $('#results').hide();
            $('#loadingmessage').show();
            var a = $("#query").val();

            $.ajax({
                type: "POST",
                url: "/Search/Index",
                data: ({ query: a }),
                datatype: "json",
                success: function (data) {
                    $('#results').empty();
                    for (var i = 0; i < data.length; i++) {
                        var div = "<div>" + data[i].Name + "</div>";
                        $("#results").append(div);

                    }
                    $('#loadingmessage').hide();
                    $('#results').show();
                },
                failure: function (errMsg) {
                    $('#loadingmessage').hide();
                    alert(errMsg);
                }
            });
        });
    });

Upvotes: 0

Darin Dimitrov
Darin Dimitrov

Reputation: 1038880

The Create controller action doesn't expect parameters to be JSON serialized so you don't have to. Try passing them directly instead:

var dataPost = { titel: 'titel', message: 'msg', tagIds: 'hello' };
jQuery.ajax({
    type: "POST",
    url: "Create",
    data: dataPost,
    dataType: "json",
    success: function(result) {
        alert("Data Returned: ");
    }
});

Upvotes: 15

Related Questions