如何使用AJAX将数组值传递给PHP?

时间:2017-08-29 12:02:04

标签: php jquery mysql json ajax

我正在尝试使用AJAX将数据提交到数据库。我有一个数组,我必须使用AJAX将数组的值传递给PHP,以显示所有相关记录。

<form id="search-form" method="POST">
  <input value="4869" name="compare_id[]" type="hidden">
  <input value="4884" name="compare_id[]" type="hidden">
  <input value="5010" name="compare_id[]" type="hidden">
  <input type="button" id="search-button" name="search-button" value="search">
</form>
<div id="response"></div>

AJAX

<script>
    $(document).ready(function(){
        $('#search-button').click(function(){
            $.ajax( {
                type: 'POST',
                url: 'response.php',
                data: $('#search-form').serialize(),
                dataType: 'json',
                success: function(response) {
                    $('#response').html(response);
                    //alert(response);
                }
            });
        });
    });
</script>

PHP

$sql='SELECT Name, Email FROM request WHERE Id IN (' .( is_array( $_POST['compare_id'] ) ? implode( ',', $_POST['compare_id']) : $_POST['compare_id'] ).')';

    $records = array();
    $query=$conn->query($sql);

    if ($query->num_rows > 0) {
    while($row=$query->fetch_assoc()){ 
        $records[]=$row;
    }
}
echo json_encode($records);exit();

3 个答案:

答案 0 :(得分:1)

<强> HTML

<form id="search-form" method="POST">
  <input value="4869" name="compare_id[]" type="hidden">
  <input value="4884" name="compare_id[]" type="hidden">
  <input value="5010" name="compare_id[]" type="hidden">
  <input type="button" id="search-button" name="search-button" value="search">
</form>
<div id="response"></div>

<强> JS

<script>
    $(document).ready(function(){
        $('#search-button').click(function(){
            $.ajax( {
                type: 'POST',
                url: 'response.php',
                data: $('#search-form').serialize(),
                dataType: 'json',
                success: function(response) {
                    $('#response').html(response);
                }
            });
        });
    });
</script>

<强> PHP

var_dump($_POST['compare_id']);
// it is already an array of ids. You can do whatever you want with it.

答案 1 :(得分:0)

您的代码中存在错误。调试此方法的一个好方法是在PHP脚本中print_r POST值。

第一个$_POST["All"]不存在。它是all。 (PHP)

其次,您发送的GET请求不是POST。 (jQuery的)

第三,将日期格式化为json。这样做的一个好方法是在compare_id.push之后创建一个变量,它更具可读性:

var json_data = {"my_array" : [1,2, "bonjour", 4]};

您的问题主要与“如何调试”有关。我认为你应该记录正在发生的事情,以弄清楚发生了什么。

答案 2 :(得分:0)

更改您的脚本,如下所示。你的输出是在数组中,所以你不能直接在div中添加它

<script>
    $(document).ready(function(){
        $('#search-button').click(function(){
            $.ajax( {
                type: 'POST',
                url: 'action.php',
                data: $('#search-form').serialize(),
                dataType: 'json',
                success: function(response) {
                     $('#response').html();
                    for(data in response) //loop over your data
                    {
                      $('#response').append(response[data].Email);  //add email
                    }

                    //alert(response);
                }
            });
        });
    });
</script>