Reputation: 19217
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
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
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