将多个数组的ajax数据发布到php

时间:2016-12-11 08:05:46

标签: php jquery arrays json ajax

我已成功发布了一个序列化数组,但我无法弄清楚如何在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>"; 
      } 
    }
?>

一个阵列工作正常,但是当我尝试将第二个阵列 数量 添加到 数据时 字段,它不起作用。

1 个答案:

答案 0 :(得分:-1)

您可以使用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');
        }
    });
});