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

Javascript 如何将数组中多个1元素的值从ajax传递到PHP?,javascript,php,ajax,Javascript,Php,Ajax,实际上,我通过一个循环和一个数组得到了相同id的按钮的值,我想把这些值从ajax传递到php,但问题是它只显示最后一个元素的值 function remove() { var elms = document.querySelectorAll("[id='botn']"); for (var i = 0; i < elms.length; i++) var datastring=elms[i].value;

实际上,我通过一个循环和一个数组得到了相同id的按钮的值,我想把这些值从ajax传递到php,但问题是它只显示最后一个元素的值

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) {

                }

        });
        }
函数删除(){
var elms=document.queryselectoral(“[id='botn']”);
对于(变量i=0;i
当我使用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;



?>

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

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

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

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

您只获得最后一个元素,因为每次执行循环时都要重新分配该值

您需要使用
push
方法

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

您只获得最后一个元素,因为每次执行循环时都要重新分配该值

您需要使用
push
方法

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

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

无论如何,在php中,您将需要按照下面的代码循环浏览发布的数据

foreach($myArray as $pid){

echo $pid;
}
下面的代码假设您希望循环浏览发布的数据,以根据posts\U id从posts表中删除记录

<?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;
}


?>


如果您仍然面临任何问题,请告诉我。

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

无论如何,在php中,您将需要按照下面的代码循环浏览发布的数据

foreach($myArray as $pid){

echo $pid;
}
下面的代码假设您希望循环浏览发布的数据,以根据posts\U id从posts表中删除记录

<?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;
}


?>


如果您仍然面临任何问题,请告诉我。

在您的代码中,您试图做的是

var datastring = elms[i].value; // Your problem is here
在这里,您每次都要声明datastring,因此您得到的是数据中的最后一个值。相反,您可以在数组中推送值,然后将数组转换为JSON,然后通过ajax调用将其发送到php,如下所示

function remove(){
 var elms = document.querySelectorAll("[id='botn']");
 var datastring = [];
 for (var i = 0; i < elms.length; i++)
 {
   datastring.push(elms[i].value);
   console.log(datastring);
 }
var myData = JSON.stringify(datastring);

$.ajax({
   url: 'php/del_beacon.php',
   type: 'post',
   data: {data:myData},
   success: function(response) {
    }
  });
}
函数删除(){
var elms=document.queryselectoral(“[id='botn']”);
var-datastring=[];
对于(变量i=0;i

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

var datastring = elms[i].value; // Your problem is here
在这里,您每次都要声明datastring,因此您得到的是数据中的最后一个值。相反,您可以在数组中推送值,然后将数组转换为JSON,然后通过ajax调用将其发送到php,如下所示

function remove(){
 var elms = document.querySelectorAll("[id='botn']");
 var datastring = [];
 for (var i = 0; i < elms.length; i++)
 {
   datastring.push(elms[i].value);
   console.log(datastring);
 }
var myData = JSON.stringify(datastring);

$.ajax({
   url: 'php/del_beacon.php',
   type: 'post',
   data: {data:myData},
   success: function(response) {
    }
  });
}
函数删除(){
var elms=document.queryselectoral(“[id='botn']”);
var-datastring=[];
对于(变量i=0;i

然后,在php代码中,您可以使用datastring.push(elms[i].value),通过php中的json_decode()函数再次将json转换为数组;值仍然没有显示。它显示的是元素总数。。。。。。当我使用这个方法时,输出是8,这是
console.log(datastring)输出的元素总数?或者在PHP中?console.log(datastring)中的输出是(8)[“信标1”、“信标2”、“信标3”、“信标4”、“信标5”、“信标6”、“信标7”、“信标8”],在PHP中的输出是“数组”,这很好,这意味着数据收集正确。现在,做一个
var\u转储($\u POST)$\u POST['data']['data']
;值仍然没有显示。它显示的是元素总数。。。。。。当我使用这个方法时,输出是8,这是
console.log(datastring)输出的元素总数?或者在PHP中?console.log(datastring)中的输出是(8)[“信标1”、“信标2”、“信标3”、“信标4”、“信标5”、“信标6”、“信标7”、“信标8”],在PHP中的输出是“数组”,这很好,这意味着数据收集正确。现在,做一个
var\u转储($\u POST)$\u POST['data']['data']
@masivuye;值仍然没有显示。它显示的是元素总数。。。。。。当我使用这个方法时,输出是8,这是总的element@masivuye使用datastring.push(elms[i].value);值仍然没有显示。它显示的是元素总数。。。。。。当我使用这个方法时,输出是8,这是元素的总数发布你所有的代码ajax、php和html让我看看它们都有问题我自己做的查询中有一个问题…再次非常感谢champ!发布你所有的代码——ajax、php和html——让我看看它们——查询中有一个问题,我自己做的……谢谢