传递给javascript的参数不正确



我正在为我的家人建立一个简单的网站来跟踪他们自己的拼图游戏。一个功能是能够删除他们不再拥有的谜题。我打算将行ID作为参数传递给一个单独的文件,但我认为应该在中间放一个javascript确认弹出窗口。我似乎所有的东西都运行得几乎正确,但传递的论点是不正确的,我不知道为什么。它传递的是表中最后一行的ID,而不是当前行的ID。希望有人能给我指明正确的方向。

PHP代码

while ($row = $result->fetch_assoc()) {
echo "<script>var puzzleID = " . $row['id'] . "</script>";
echo "<td><a href='puzzleedit.php?=" . $row['id'] . "'>Edit</a> | <button onclick='confirmationBox()'>Delete</button></td>";
}

单独文件中的JS代码

function confirmationBox() {
if (confirm("Are you sure you want to delete this puzzle?")) {
window.location = './puzzledelete.php?=' + puzzleID
} else {
}
}

有趣的是,在编辑链接中使用$row['id']可以按预期工作,它可以从数据库中获取正确的行ID。脚本中的$row['id']正在获取表的最后一行ID。

循环不断重新分配puzzleId。当您调用confirmationBox()时,它将具有最后分配的值,而不是在每个<td>之前分配的值。

不要使用全局变量,而是使用函数参数。

while ($row = $result->fetch_assoc()) {
echo "<td><a href='puzzleedit.php?=" . $row['id'] . "'>Edit</a> | <button onclick='confirmationBox(" . $row['id'] . ")'>Delete</button></td>";
}
function confirmationBox(puzzleID) {
if (confirm("Are you sure you want to delete this puzzle?")) {
window.location = './puzzledelete.php?=' + puzzleID
} else {
}
}

最新更新