在$ form.serialize()ajax帖子中添加其他数据?

时间:2014-03-05 20:32:34

标签: javascript jquery ajax serialization

我有以下代码片段,我将序列化表单数据并通过ajax发布。我遇到过需要添加其他数据的情况。在这种情况下,我需要添加一个名为'selectedHours'的逗号分隔数组。这可能吗?

我正在创建'selectedHours',如下所示,它创建了一个列为“小时选择”类的列表项数组。在这方面没有使用表格值,输入等。

var selectedHours = [];
$('.hour-selected').each(function(k,v) {
    selectedHours.push($(v).text());
});

$.ajax({ 
    type: 'post',
    url: '/process/somepage.php',
    data: $form.serialize(),
    dataType : 'json'
}).done(function (response) {
... and so on...

2 个答案:

答案 0 :(得分:16)

试试这个:

$.ajax({ 
    type: 'post',
    url: '/process/somepage.php',
    data: $form.serialize() + '&hours=' + JSON.stringify(selectedHours),
    dataType : 'json'
}).done(function (response) {
... and so on...

发送的数据只是一个URL编码的字符串。您可以使用简单的连接附加其他值。

答案 1 :(得分:0)

也许最好的解决方案可能是使用by this answer所建议的jQuery的serializeArray

var data = $form.serializeArray();
data.push({name: 'hours', value: selectedHours});

$.post('/process/somepage.php', data).done(doSomething);

此解决方案可能更可取,因为它避免了手动构造序列化的数据字符串,而是选择将数据传递给jQuery处理。