Когда вы указываете contentType: "application/json
, вы должны преобразовать данные, отправленные вами в JSON.В вашем случае данные представляют собой javascript objec` (который содержит некоторые строковые данные), а не JSON.
Поскольку userdetails
уже является строковым (с использованием JSON.stringify()
), измените код Ajax на * 1006.*
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: userdetails,
success: function (data) {
...
});
Однако нет необходимости отправлять его как JSON.Вы можете использовать значение по умолчанию 'application/x-www-form-urlencoded; charset=UTF-8'
Удалить строку кода userdetails = JSON.stringify(userdetails);
, а затем просто
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: userdetails,
success: function (data) {
...
});
Примечание. В обоих случаях вы можете опустить параметр traditional: false
.
И если вы правильно сгенерировали элементы управления формы, используя методы HtmlHelper
для привязки к свойствам модели, вам не нужно вручную создавать object
.Вы можете просто использовать .serialize()
.Кроме того, вы должны обрабатывать событие отправки форм, а не событие нажатия кнопки, и проверять .valid()
$('form').submit(function(e) {
e.preventDefault();
if (!$(this).valid()) {
return;
}
var userdetails = $(this).serialize();
var url = '@Url.Action("WFUserEdited", "WFUser")';
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: userdetails,
success: function (data) {
...
});
});