我有一个这样的表单。我想用ajax保存表单,主要是此处输入的数据将按2行插入。一个用于产品a,另一个用于b。
(a和b是产品名称,将在产品名称列中保存为a和b)
<form class="product-data" action="">
<table>
<tr class="data-row">
<td>
<input type="number" name="finance[a_source_unit]" >
</td>
<td >
<input type="number" name="finance[a_target_unit]">
</td>
<td>
<input type="number" name="finance[a_client_price]">
</td>
<td>
<input type="number" name="finance[a_client_salary]" >
</td>
</tr>
<tr class="data-row">
<td>
<input type="number" name="finance[b_source_unit]" >
</td>
<td >
<input type="number" name="finance[b_target_unit]">
</td>
<td>
<input type="number" name="finance[b_client_price]">
</td>
<td>
<input type="number" name="finance[b_client_salary]" >
</td>
</tr>
</table>
</form>
我的数据库就像这个
id product_name source_unit target_unit client_price client_salary
所以我把ajax做成了这个
var Table = $(this).closest('.product-data');
var data = Table.serializeArray();
data.push({name: 'action', value: 'save_product_data' });
$.post( ajaxUrl, data, function(msg) {
console.log(msg);
});
在save_product_data函数中,我得到了这样的数据
function save_product_data() {
$finance = $_POST['finance'];
print_r($finance);
}
数据是这样来的
Array
(
[a_source_unit] => 3213
[a_target_unit] => 123
[a_client_price] => 34278
[a_client_salary] => 7584
[b_source_unit] => 3213234
[b_target_unit] => 1234
[b_client_price] => 34275438
[b_client_salary] => 75854
)
所以基本上我希望a的值插入一行,b插入另一行。
如果您使用这样的表单:
<form class="product-data" action="">
<table>
<tr class="data-row">
<td>
<input type="number" name="finance[a][source_unit]" >
</td>
<td >
<input type="number" name="finance[a][target_unit]">
</td>
<td>
<input type="number" name="finance[a][client_price]">
</td>
<td>
<input type="number" name="finance[a][client_salary]" >
</td>
</tr>
<tr class="data-row">
<td>
<input type="number" name="finance[b][source_unit]" >
</td>
<td >
<input type="number" name="finance[b][target_unit]">
</td>
<td>
<input type="number" name="finance[b][client_price]">
</td>
<td>
<input type="number" name="finance[b][client_salary]" >
</td>
</tr>
</table>
</form>
在$_POST
数组中会有这样的东西,您只需要使用foreach逐行插入:
array
'finance' =>
array
'a' =>
array
'source_unit' => string '5' (length=1)
'target_unit' => string '5' (length=1)
'client_price' => string '5' (length=1)
'client_salary' => string '5' (length=1)
'b' =>
array
'source_unit' => string '1' (length=1)
'btarget_unit' => string '1' (length=1)
'bclient_price' => string '1' (length=1)
'client_salary' => string '1' (length=1)