尝试使用JQuery / Ajax函数删除记录,以便每次删除时都不会重新加载我的页面。我有一个Movie.php,它用作Movie的模型对象,在这里我放置了基于movieId参数删除的delete_movie函数。我试图在我的Jquery调用中调用它,但是它似乎没有调用我的函数delete_movie(movieId)。

这是我的Movie.php

<?php

class Movie {
    public static function delete_movie($movieId) {
        $db = Database::getDB();

        $query = 'DELETE FROM MOVIE
              WHERE movieId = :movieId';
        $statement = $db->prepare($query);
        $statement->bindValue(':movieId', $movieId);
        $statement->execute();
        $statement->closeCursor();
    }
}
?>


movielist.php

<tr class="delete_mem<?php echo $movie['movieId'];?>">
    <td><?php echo $movie['title']; ?> </td>
    <td><?php echo $movie['releaseYear']; ?></td>
    <td><?php echo $movie['imdbId']; ?></td>
    <td><?php echo $movie['description']; ?></td>
    <td><button type="submit" class="btn btn-danger" id="<?php echo $movie['movieId'];?>">Delete</button></td>
</tr>


JQScript.js

$(document).ready(function() {
$('.btn-danger').click(function() {
    var id = $(this).attr("id");
    if (confirm("Are you sure you want to delete this?")) {
        $.ajax({
            type: "POST",
            url: "model/Movie.php",
            data: {
                delete_movie : id
            },
            success: function() {
                alert('Success deletion!');
            }
        });
    } else {
        return false;
    }
});


});

最佳答案

当PHP运行movie.php时,它只是在处理类。文件中的PHP实际上并没有说要做什么。

如果您不需要课程,只需将movie.php更改为

$db = Database::getDB();

$query = 'DELETE FROM MOVIE
      WHERE movieId = :movieId';
$statement = $db->prepare($query);
$statement->bindValue(':movieId', $movieId);
$statement->execute();
$statement->closeCursor();


如果文件中还有更多内容,或者您​​必须使用类,则需要一个控制器来接收URL POST,然后调用Movie::delete_movie($id)

您似乎正在遵循MVC模式,您拥有的模型和视图,并添加此控制器来控制操作,这将是最后一部分。

关于javascript - 如何使用Ajax和JQuery调用带参数的php函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49091771/

10-11 03:41
查看更多