javascript - 使用 AJAX 在 PHP 文件中调用函数,并使用特定于数据库中记录的 ID 来更新记录

标签 javascript php jquery mysql ajax

我有以下嵌入了 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/

相关文章:

javascript - Meteor 1.1 - 当特定元素在 dom 上呈现时的回调

PHP mysql 未定义索引 : timestamp

javascript - 时间 div 是在具有相同类 jQuery 的多个 div 中创建的

javascript - 在样式表中快速切换 rems 和像素

javascript - 如何在 Extjs 中打破多行的长标签

php - 空目录错误处理

javascript - 如何使用 javascript 或 jquery 删除选择上的名称并在文本区域上添加名称?

javascript - Jquery 数据表 : Replacing the buttons with icons at the same location

Javascript 代码(alert() 除外)不能在 jsp 文件中运行,但可以在 .html 下运行。

php - 奇怪的 $_GET 行为