<div class='invoice_object'>
<input name='item[1][quantity]' type='text' value=''/>
<textarea name='item[1][description]' ></textarea>
<input name='item[1][unit_price]' type='text' value=''/>
<input name='item[1][amount]' type='text' value=''/>
</div>
可以使用jquery添加另一个发票对象,它就像这样:
<div class='invoice_object'>
<input name='item[2][quantity]' type='text' value=''/>
<textarea name='item[2][description]' ></textarea>
<input name='item[2][unit_price]' type='text' value=''/>
<input name='item[2][amount]' type='text' value=''/>
</div>
如果我使用提交按钮正常发布,那么$ _POST变量将包含:
$_POST['customer']
$_POST['address']
$_POST['item'] {
['1'] {
['quantity']
['description']
['unit_price']
['amount']
}
['2'] {
['quantity']
['description']
['unit_price']
['amount']
}
}
我已经搜索了几个小时并尝试了各种版本或序列化和serializeArray.JSON解码等 看来你只能从jquery发送一个字符串到php。使用JSON可以将其发送到php文件,但是$ _POST总是只有1个值并且是一个包含所有数据的字符串。
我认为必须有一种方法可以做到这一点......而不是手动制作一个根据方括号的位置剖析字符串的函数。
我可以提供一些建议。 感谢名单。 但没有全面解剖
jquery的
var x = $('#new_invoice').serialize();
$.post("script/new_invoice_script.php", {
x
}, function(data) {
console.log (data);
});
答案 0 :(得分:3)
你不应该将x
放在另一个对象中。它已经采用data
的{{1}}参数所需的格式。
$.post
当您撰写var x = $('#new_invoice').serialize();
$.post("script/new_invoice_script.php", x, function(data) {
console.log(data);
});
时,它是{ x }
的ES6简写。这会将序列化的输入字符串放入{ x: x }
。
答案 1 :(得分:0)
.serialize()方法以标准URL编码表示法创建文本字符串。它可以作用于选择了单独表单控件的jQuery对象,例如,,和:$(“input,textarea,select”)。。serialize();
您需要使用.serializeArray()