1

我有一个如下所示的表格:

<input type="text" name="item[101][0][date]" value="2012" />
<input type="text" name="item[101][0][price]" value="10.00" />
<input type="text" name="item[101][0][colour]" value="orange" />
<input type="text" name="item[101][1][date]" value="2013" />
<input type="text" name="item[101][1][price]" value="5.00" />
<input type="text" name="item[101][1][colour]" value="blue" />

而且我希望能够从前 2 个键中选择整个数组并将整个数组存储为 javascript 中的数组,以便我可以通过 AJAX 将其发送到 PHP。

我现在在 jQuery 中有这个,但它似乎并没有产生我想要的东西。

var products = $('input[name~="item['+itemCode+']['+basketId+']"]');

其中 itemCode 和 basketId 并从提交按钮(正在工作)中检索。

一旦我有了这个名为“products”的数组,我就知道如何序列化它并将其作为发布请求发送,我似乎无法最终得到一个数组,例如:

products[101][0][date] = 2012
products[101][0][price] = 10.00
products[101][0][colour] = orange

或者:

products[101][1][date] = 2013
products[101][1][price] = 5.00
products[101][1][colour] = blue

对此的任何帮助将不胜感激!

谢谢!

4

2 回答 2

2

我建议使用 data-* HTML5 属性将数据存储在不同的持有者而不是存储在名称中的所有内容。就像是:

<input type="text" data-category="101" data-index="0" data-id="date" value="2012" />

然后将通过以下方式执行选择:

var input = $('input[data-category=' + category + '][data-index=' + index + '][data-id=' + id + ']');

这也允许您轻松选择同一类别或具有相同索引等的所有项目。

数组的构造如下:

var products = [];
// Define category, index and id
products[category][index][id] = $('input[data-category=' + category + '][data-index=' + index + '][data-id=' + id + ']').val();
于 2012-09-14T14:04:13.443 回答
0

您正在使用包含单词选择器 ( )的属性name~=value,它的作用与您想要的略有不同:

此选择器将测试字符串与属性值中的每个单词匹配,其中“单词”定义为由空格分隔的字符串。如果测试字符串完全等于任何单词,则选择器匹配。

使用以选择器( )开头的属性name^=value

var products = $('input[name^="item['+itemCode+']['+basketId+']"]');

要么使用包含选择器的属性( name*=value):

var products = $('input[name*="item['+itemCode+']['+basketId+']"]');

演示

于 2012-09-14T14:03:00.463 回答