【问题标题】:add additional data to $form.serialize() ajax post?向 $form.serialize() ajax 帖子添加其他数据?
【发布时间】:2014-03-05 20:32:33
【问题描述】:

我有以下 sn-p,我在其中序列化表单数据并通过 ajax 发布它。我遇到了需要添加其他数据的情况。在这种情况下,我需要添加一个名为“selectedHours”的逗号分隔数组。这可能吗?

我正在创建“selectedHours”,如下所示,它创建了一个带有“hour-selected”类的列表项数组。这方面没有使用表单值、输入等。

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...

【问题讨论】:

    标签: javascript jquery ajax serialization


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

    • 我不知道它这么简单...用 ajax 又学到了一件事...谢谢! JSON.stringify 是必要的吗?例如, selectedHours 已经返回下午 1 点、下午 4 点、晚上 11 点。
    • 很高兴为您提供帮助 :) @user756659
    【解决方案2】:

    也许更好的解决方案可能是使用 jQuery 的 serializeArray,正如建议的 by this answer

    var data = $form.serializeArray();
    data.push({name: 'hours', value: selectedHours});
    
    $.post('/process/somepage.php', data).done(doSomething);
    

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

    【讨论】:

      猜你喜欢
      • 2014-02-17
      • 2021-07-11
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多