我已成功发布了一个序列化数组,但我无法弄清楚如何在AJAX帖子中发布多个数组。这是我的代码:
HTML
<td><input type="text" name='item_name[]' id="item_name" class="form-control" autocomplete="off"></td>
<td><input type="number" name='quantity[]' id="quantity" class="form-control" autocomplete="off"></td>
jQuery的
$("#create_order").click(function(){
var item_name = $('[name="item_name[]"]').serialize();
var quantity = $('[name="quantity[]"]').serialize();
$.ajax({
url: "includes/ajax_new_order.php",
data: {item_name:item_name, quantity:quantity},
type: "POST",
success:function(data){
$("#editModal").modal('hide');
$('#create_order').html('<span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Save');
}
});
});
PHP
<?php require("../init.php");
$item_name = $_POST['item_name'];
$quantity = $_POST['quantity'];
foreach (array_combine($item_name, $quantity) as $key1 => $key2) {
$query = $database->query("INSERT INTO order_tb(item,quantity) VALUES('$key1','$key2') ");
if ($query) {
echo "<p>Success</p>";
}
else {
echo "<p>Failed</p>";
}
}
?>
一个数组工作正常,但是当我尝试将第二个数组数量添加到data:字段时,它不起作用。
您可以使用map函数而不是serialize函数。这是一个示例代码。刚用这个下面的示例代码替换了你的jquery代码。
$("#create_order").click(function(){
//var item_name = $('[name="item_name[]"]').serialize();
//var quantity = $('[name="quantity[]"]').serialize();
var item_name =$('[name="item_name[]"]').map(function(){return $(this).val();}).get();
var quantity = $('[name="quantity[]"]').map(function(){return $(this).val();}).get();
$.ajax({
url: "includes/ajax_new_order.php",
data: {item_name:item_name, quantity:quantity},
type: "POST",
success:function(data){
$("#editModal").modal('hide');
$('#create_order').html('<span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Save');
}
});
});