如何从ajax到PHP传递数组中多于1个元素的值?

时间:2019-03-04 11:04:49

标签: javascript php ajax

实际上,我通过循环和数组获取具有相同id的按钮的值,我想将这些值从ajax传递到php,但是问题来了,它只显示了last元素的值?

function remove() {
            var elms = document.querySelectorAll("[id='botn']");

            for (var i = 0; i < elms.length; i++)
            var datastring=elms[i].value;
            console.log(datastring);

            $.ajax({
               url: 'php/del_beacon.php',
                type: 'post',
                data: {data:datastring},
                success: function(response) {

                }

        });
        }

当我使用alert(elms [i] .vlaue)时,它将显示所有选定按钮的值 这是我的php文件

<?php
$servername="localhost";
    $username="root";
    $password="";
    $dbname="beelist";

$conn=mysqli_connect($servername,$username,$password,$dbname);
error_reporting(0);
$connDB= mysqli_select_db($conn,'beelist');
$myArray = $_POST['data'];
echo $myArray;



?>

4 个答案:

答案 0 :(得分:1)

您只在datastring变量中存储一个值,因为它是一个字符串变量。

for (var i = 0; i < elms.length; i++)
    var datastring = elms[i].value;

对于此循环的每个元素,都重写变量,这就是为什么仅保存最后一个值的原因。

将其更改为数组,然后通过push()向其提供值。然后,您应该在PHP中使用整个数组:

var datastring = [];
for (var i = 0; i < elms.length; i++)
    datastring.push(elms[i].value);

答案 1 :(得分:0)

仅获取最后一个元素,因为每次循环执行时都要重新分配值。

您需要使用push方法。

var data.push(elms[i].value);

答案 2 :(得分:0)

由于要通过ajax获取选定数据的所有值。 PHP是您遇到问题的地方。在您的php代码中,您没有指定要对发布的数据执行的操作,例如插入,更新或删除操作。

无论如何在php中,您都需要按照以下代码遍历发布的数据

foreach($myArray as $pid){

echo $pid;
}

下面的代码假定您要遍历发布的数据,以基于posts_id从发布表中删除记录

<?php
$servername="localhost";
    $username="root";
    $password="";
    $dbname="beelist";

$conn=mysqli_connect($servername,$username,$password,$dbname);
error_reporting(0);
$connDB= mysqli_select_db($conn,'beelist');
$myArray = $_POST['data'];


//loop through your post and then insert or delete or update records
foreach($myArray as $pid){

// Delete record
    $query = "DELETE FROM posts WHERE id=".$pid;
    mysqli_query($con,$query);


echo $pid;
}


?>

让我知道您是否仍然遇到任何问题。

答案 3 :(得分:0)

在您的代码中,您要尝试的是

1

在这里,您正在声明数据字符串更新,因此,您正在获取数据中的最后一个值。相反,您可以在数组中推送值,然后将数组转换为JSON,然后通过ajax调用将其发送到php,如下所示。

var datastring = elms[i].value; // Your problem is here

然后在您的php代码中,您可以再次通过php json_decode中的json_decode()函数将json转换为数组