实际上,我通过循环和数组获取具有相同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;
?>
答案 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转换为数组