2012-03-29 36 views
0

我有一个结构是这样的一个简单的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,无论是。什么是最简单的方法来做到这一点?

回答

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]更好的选择器,例如类。

+0

感谢。这似乎是一种方式,但我无法序列化产品变量。 http://jsfiddle.net/eg99X/2/ – WraithLux 2012-03-29 14:57:02

+0

使用此方法,您无需序列化产品变量。这里的代码正在执行序列化对整个表单的操作,但不包括'selected'数据参数设置为false的行。 – 2012-03-29 15:11:22

+0

我知道这超出了问题的范围,但如果你不介意我问。 - 可以说我有两个单独的表单,我想将这个表单数据附加到另一个表单。 – WraithLux 2012-03-29 15:30:08

1

我假设你在你的表单标签中有必要的数据。如果您不想发布任何数据,则不应在<form>之内。

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

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