Это не сработает, потому что связыватель модели по умолчанию не ожидает, что данные будут отформатированы следующим образом.Просто используйте .serialize()
вместо serializeArray()
.Пример:
$.ajax({
url: '/foo',
type: 'post',
data: $('#myForm').serialize(),
success: function(result) {
alert('ok');
}
});
или упростите свою жизнь с помощью превосходного плагина jquery , который позволяет элегантно AJAXify существующих HTML-форм:
$(function() {
$('#myForm').ajaxForm(function(result) {
alert('ok');
});
});
ОБНОВЛЕНИЕ:
После объяснения в вашем комментарии вот как вы можете продолжить:
Вы можете использовать плагин из этого ответа , который преобразует элементы формы вобъект понятен связующему по умолчанию модели и может быть агрегирован с некоторой другой информацией:
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
, а затем просто:
data: { filters: $('#myForm').serializeObject(), someOtherData: 'foo bar' }