我有以下嵌入了 PHP 的 html 代码
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
if (!$row['archived']) {
echo "<tr id='" . $row['request_id'] . "'>
...
<button class='btn btn-warning archive'>Archive</button></br>
我构建了以下 JavaScript 文件
$(document).ready(function() {
"use strict";
$(".archive").click(function() {
$.ajax({
type: 'POST',
url: '../_php/functions.php',
data: {'archive': $(this).parent().parent().attr('id')},
success: function() {
window.alert("done");
},
error: function() {
window.alert("could not update");
}
});
});
});
我正在使用这个用于数据管理的 php 文件构建我的“功能”
<?php
require "connect.php"; // get connected to database.
$archive = "UPDATE requests SET archived='1' WHERE request_id='$id'";
if ($_POST['function'] == 'archive') {
if ($conn->query($archive) === TRUE) {
echo "Record " . $id . " has been archived.";
} else {
echo "Error: " . $conn->error;
}
} else if ($_POST['function'] == 'view') {
}
?>
我已经对此进行了测试,我希望它能向我显示成功消息,并将相应记录的“存档”值从 0 更改为 1(或从 false 更改为 true)。我看到了成功消息,但我的记录即使在刷新后仍继续显示在屏幕上,并且我的数据库没有反射(reflect)从 false 到 true(或从 0 到 1)的变化。我想知道我是否遗漏了什么。
最佳答案
我认为问题在于您没有使用通过 ajax 传递的 id
未在 functions.php
上正确使用。您实际上已将 request_id
作为 archive
传递给您,但您并未使用它。
在您的代码中 $archive = "UPDATE requests SET archived='1' WHERE request_id='$id'"
但 $id
未定义。
<?php
require "connect.php"; // get connected to database.
/* make sure that archive button is clicked */
if (isset($_POST['archive']) ) {
/* Get the id here*/
$id = $_POST['archive'];
$archive = "UPDATE requests SET archived='1' WHERE request_id='$id'";
if ($conn->query($archive) === TRUE) {
echo "Record " . $id . " has been archived.";
} else {
echo "Error: " . $conn->error;
}
} else if ($_POST['function'] == 'view') {
}
?>
同时使用检查工具检查您的网络,以便您可以检查从 `functions.php 返回的响应。还要检查控制台是否有任何 javascript 错误。
关于javascript - 使用 AJAX 在 PHP 文件中调用函数,并使用特定于数据库中记录的 ID 来更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33338130/