从表单中获取数据并构建它的多维数组

时间:2012-03-29 13:00:28

标签: javascript jquery json

我有一个简单的html表单,其结构如下:

<form name="test" action="">
    <tr class="selectable" data-selected=false>
        <input type="hidden" name="product[gate][id] value=<? echo $pid?>"/>
        <input type="text" name="product[gate][amount]"/> 
    </tr>
</form>

我需要收集每个“数据选择”为真的tr行。

因此我最终得到某种类型的数组,然后我可以使用jQuery POST请求发送到服务器。

这样的事情:

products => Array(
    [0] => Array(
        id => 1134,
        amount => 2
    ),
    [2] => Array(
        id => 1134,
        amount => 3
    )
)

我不知道如何使用js构建多维数组,我也不熟悉JS对象或JSON。最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

var $trs = $("tr").filter(function() {
    return $(this).data("selected");
});

var products = [];
$.each($trs, function(i, $tr) {
    products.push({
        "id": $('input[type="hidden"]', $tr).val(),
        "amount": $('input[type="text"]', $tr).val()
    });
})

Example fiddle

products变量应该采用您可以在AJAX调用中使用的格式。您可能希望在工作代码中使用比input[attr]更好的选择器,例如类。

答案 1 :(得分:1)

我假设您在表单标记中包含必要的数据。如果您不想发布任何数据,那么它不应该在<form>内。

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});

更多信息:http://api.jquery.com/serialize/