0

我正在尝试使用 jQuery Ajax 函数删除 MySQL 数据库中的一行。当我单击帖子“删除帖子”链接时,我希望它触发一个onClick事件,该事件将运行删除行功能。

到目前为止,这是我的代码:

首先显示带有链接的帖子以删除每个帖子。

foreach($postarray AS $value){
echo '<div class="item">'.$value['post_title'].'  , <a href="#" class="delete_link" value="'. $value['post_id'] .'">Delete Post</a></div>';

}

然后是Jquery:

$(document).ready(function(){
$(".delete_post").click(function(){
        var id = $(this).attr("value");

        function deletePost(id){
            $.ajax({
                type: "POST",
                url: "delete_post.php",
                data: {id: id},
                success: function(data){
                    alert("Post deleted");
                }
            })
        }
    });

});

delete.php代码:

//Start the session
session_start();
require_once('func/auth.class.php');
require_once('func/functions.php');
require_once('func/db.class.php');

// Check if user is logged in
if(!$_SESSION['is_admin'] || empty($_POST['id'])){
    header("Location: index.php");
}

$post_id = $_POST['id'];
delete_post($post_id);

delete_post()功能:

function delete_post($post_id){
        global $dbh;

        $stmt = $dbh->prepare("DELETE FROM mjbox_posts WHERE post_id = ?");
        $stmt->bindValue(1, $post_id, PDO::PARAM_INT);
        $stmt->execute();

        if($stmt->rowCount() != 0){
            return TRUE;
        }else{
            return FALSE;
        }
    }

目前这种方法没有从数据库中删除帖子,我不知道为什么。

4

1 回答 1

1

正如 jcho360 在评论中提到的那样,当绑定到 click 事件时,css 类中存在错误。

一旦你修复它仍然无法工作。当点击事件被触发时,你声明了一个删除帖子的函数,但你没有调用它。一种解决方法可能是将其更改为以下内容:

$(document).ready(function(){
    $(".delete_link").click(function(){
        var id = $(this).attr("value");

        $.ajax({
            type: "POST",
            url: "delete_post.php",
            data: {id: id},
            success: function(data){
                alert("Post deleted");
            }
        });
    });
});

这样,您实际上是在触发 click 事件时发出请求。

此外,我刚刚注意到在 ajax 调用中您正在请求“delete_post.php”,但您提到您的 php 文件称为 delete.php。这也需要修复。

您可以使用浏览器中的检查器查看单击链接时会发生什么。它是否提出请求?id 参数设置是否正确?等等。

于 2013-04-22T16:10:21.260 回答