javascript - AJAX表单发送信息,PHP不执行

标签 javascript php jquery mysql ajax

几天前我遇到了这个确切形式的问题,并用不同的 PHP 修复了,谢谢你们。现在我改变了表格中的一件事,它不再起作用了。我已提醒所有通过 AJAX 发送的变量,它们是我需要的正确值。以下是 HTML 表单的代码:

 <?php
        include('php/connect.php');

        $chquery = "SELECT * FROM rooms";
        $chresult = mysqli_query($conn, $chquery);

        while($chrow = mysqli_fetch_array($chresult)){
            echo "<div class='edit_roomRow'>";
            echo "<h1> Rum " . $chrow['Roomnumber'] . "</h1>";
            echo "<form>";
            echo "Rumsnummer:<br> <input id='c-roomnumber' type='text' value = '" . $chrow['Roomnumber'] . "'><br>";
            echo "Beskrivning:<br> <input id='c-description' type='text' value = '" . $chrow['Description'] . "'>";
            echo "</form>";
            echo "<br>";
            *update* echo "<div class='btn btn-warning change-btn' data-value='". $chrow['ID'] . "' style='float: right; margin-top: 100px;'>Ändra</div>";
            echo "</div>";
            echo "<hr/>";
        }

        mysqli_free_result($chresult);

        mysqli_close($conn);

 ?>

AJAX 在这里:

<script type="text/javascript">
    $(".change-btn").click(function(){
        var id = $(this).attr("data-value");
        var description = $("#c-description").val();
        var roomnumber = $("#c-roomnumber").val();
        //Call to ajax
        $.ajax({
            method:"GET",
            url: "php/changepost.php",
            data:{ id: id, description: description, roomnumber: roomnumber },
            success: function(){
                $("#c-description").val("");
                $("#c-roomnumber").val("");
                //Reload specific div with rooms, avoid full page reload
                $(".changerooms").load(location.href + " .changerooms");
            }
        })
    })
</script>

我尝试过更改 php 等中的变量。

<?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    include('connect.php');

    if(isset($_GET['id'])){
        $stmt = mysqli_prepare($conn, "UPDATE rooms SET Roomnumber = ?, Description = ?, WHERE ID = ?");
        mysqli_stmt_bind_param($stmt, "isi", $_GET['roomnumber'], $_GET['description'], $_GET['id']);
        mysqli_stmt_execute($stmt);
    }

    mysqli_close($conn);

?>

数据库的设置如下:

ID | Description | Roomnumber| Cleaned | Cleaner | Time

最后三个在这里无关紧要,但我想我会显示完整的数据库设置。我可以添加具有相同值的新帖子等,但是当涉及到更改某些内容时,此代码是不正确的。希望有人能帮助我:)

最佳答案

您在每个 DIV 中重复使用相同的 ID,您需要改用类。然后使用 DOM 遍历函数获取与用户点击的按钮相同的 DIV 中输入的值。

这将需要移动 </div>对于.edit_roomRow DIV 到 .change-btn 之后DIV,因此它与表单位于同一 DIV 中。

PHP:

<?php
include('php/connect.php');

$chquery = "SELECT * FROM rooms";
$chresult = mysqli_query($conn, $chquery);

while($chrow = mysqli_fetch_array($chresult)){
    echo "<div class='edit_roomRow'>";
    echo "<h1> Rum " . $chrow['Roomnumber'] . "</h1>";
    echo "<form>";
    echo "Rumsnummer:<br> <input class='c-roomnumber' type='text' value = '" . $chrow['Roomnumber'] . "'><br>";
    echo "Beskrivning:<br> <input class='c-description' type='text' value = '" . $chrow['Description'] . "'>";
    echo "</form>";
    echo "<br>";
    echo "<div class='btn btn-warning change-btn' data-value='". $chrow['ID'] . "' style='float: right; margin-top: 100px;'>Ändra</div>";
    echo "</div>";
    echo "<hr/>";
}

mysqli_free_result($chresult);

mysqli_close($conn);

?>

JS:

$(".change-btn").click(function(){
    var div = $(this).closest(".edit_roomRow");
    var id = $(this).attr("data-value");
    var description = div.find(".c-description").val();
    var roomnumber = div.find(".c-roomnumber").val();
    //Call to ajax
    $.ajax({
        method:"GET",
        url: "php/changepost.php",
        data:{ id: id, description: description, roomnumber: roomnumber },
        success: function(){
            div.find(".c-description").val("");
            div.find(".c-roomnumber").val("");
            //Reload specific div with rooms, avoid full page reload
            $(".changerooms").load(location.href + " .changerooms");
        }
    })
})

关于javascript - AJAX表单发送信息,PHP不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40184347/

相关文章:

php - 使用 AJAX 发送变量到 2 个 php 页面

PHP:加速一个非常大的循环

javascript - Bootbox 回调表单提交无法正常工作

javascript - 按右箭头键时光标消失

javascript - 为什么这段代码返回未定义?

javascript - 如何在文本框中插入值

php - 如何通过 PHP 将大型 CSV 文件导入 MySQL?

jquery - jQuery 悬停对绝对位置的影响在 IE7 上出现边距问题

javascript - 使用 React/ReduxReducer 进行正确的密码管理

javascript - 集成人力车 JS 和 React JS