我有一个表单,其中字段通过JavaScript添加。通过使用字段的数组名称,这很容易存储而没有一堆额外的JS代码(用于删除和重新排序)。
<input type="text" name="product[]" />
当我需要一个多维排列的表单数据列表时,问题出现了。
order
request_date
product[]
quantity[]
warehouse1
warehouse2
etc...
基本上,每个订单都有订单数据,多个产品,每个产品系列都可以从一个或多个仓库中提取。如果订单项的订单数量为100,并且第一选择仓库只有50个单位,他们将需要选择一个二级仓库来获得第二个50个单位...
我试图将这一切都放到一个页面上,可能有JS弹出窗口在不同的仓库之间进行选择。
问题在于,我试图想出一种将此信息发送到服务器的好方法。
我想使用排列的订单项信息,但无法弄清楚如何将每个订单项的多个仓库发送回服务器。我应该在隐藏字段(由JS仓库选择弹出窗口填充)中执行类似逗号分隔值的操作吗?有没有更好的办法?任何建议赞赏。感谢。
如果重要,后端就是PHP。
答案 0 :(得分:1)
为什么不使用JSON?在PHP端,您最终会得到嵌套数组的元素数组。
听起来像你要么不知道JSON(以及3k的SO代表,我无法相信),或者你不知道你可以将JSON传回服务器。
但是对于你所描述的内容,这听起来像是一种自然而完美的契合。
“将该数组元素作为对象粘贴到返回值”
var returnObject = { field1: "value", field2: "value" };
var buildArray = [];
$(specificSelector).each(function(){
buildArray.push($(this).data('myKey'));
});
returnObject.field3 = buildArray;
.each
。如果你想要速度或清洁,有更好的方法来做到这一点。但这很有效。 .data
关联的关键字'myKey'
。你可以改为在表格中的每个单元格上,或者其他什么。这就是 I 这样做的方式,并且可能会导致膨胀的页面。但是,当我追加一行时,我将值附加为一个对象,这样我就可以更快地完成这类事情(更快地输入)答案 1 :(得分:1)
以JSON发回。
order: {
request_date: '07/06/2011',
products: [
{
id: 1,
quantity: 3,
warehouses: [1]
},
{
id: 2,
quantity: 4,
warehouses: [1,2]
},
{
id: 3,
quantity: 5,
warehouses: [3]
}]
}
答案 2 :(得分:1)
尝试:
<input name="order[product][]" value="" />
<input name="order[product][]" value="" />
<input name="order[product][]" value="" />
etc...
答案 3 :(得分:-1)
您可以为所有仓库使用多选框。如果您还需要指定每个仓库的单位数,那么这不起作用。你可以这样做:
<select name="order4quantity2warehouse">
<option>Warehouse 1</option>
<option>Warehouse 2</option>
</select>
<input name="order4quantity2warehouse-quantity" />
然后在服务器大小上解码$ _POST以将所有数据精确到数组中。例如,您可以通过循环$ _POST的键并确定密钥匹配的模式(例如,订购[编号]数量[编号]仓库,然后将其插入阵列中的适当位置。