从Javascript调用PHP函数运行两个函数

时间:2018-07-19 14:10:11

标签: javascript php sweetalert2

正在发生什么,我的页面上有Sweetalert2。它可以很好地显示警报,但是当我单击“取消”时,它将运行两个php函数,而不仅仅是运行一个。

应该发生的事情是,当我单击“取消”时,它将带我回到要删除的帖子的页面,否则它将删除该帖子并将我带回到列表。

这是我的代码。任何帮助或建议,表示赞赏。

<!doctype html>
<html>
    <head>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.25.0/sweetalert2.all.min.js"></script>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.25.0/sweetalert2.min.css" />
        <?php
            function dontdeletepostphp(){
                $id = $_GET["id"];
                $album = $_GET["album"];
                $url = "viewpost.php?id=" . $id;
                echo $url;
            }

            function deletepostphp(){
                include('db_connect.php');
                $post = $_GET["id"];
                $albumnum = $_GET["album"];
                if($albumnum <> 0){
                    $files = glob('photoalbums/' . $albumnum . '/photos/*');
                    foreach($files as $file){
                        if(is_file($file)){
                            unlink($file);
                        }
                    }

                    $files2 = glob('photoalbums/' . $albumnum . '/thumbs/*');
                    foreach($files2 as $file){
                        if(is_file($file)){
                            unlink($file);
                        }
                    }

                    rmdir("photoalbums/" . $albumnum . "/photos");
                    rmdir("photoalbums/" . $albumnum . "/thumbs");
                    rmdir("photoalbums/" . $albumnum);

                    $sqlalbum = "delete from photoalbum where id=" . $albumnum;
                    mysqli_query($dbcon, $sqlalbum);
                }

                $sqlpost = "delete from posts where id=" . $post;
                mysqli_query($dbcon, $sqlpost);

                mysqli_close($dbcon);
            }
        ?>
            <script>
                function dontdeletepost(){
                    var x="<?php dontdeletepostphp(); ?>";
                    window.location = x;
                }

                function deletepost(){
                    var x="<?php deletepostphp(); ?>";
                    swal({
                        title: 'Post Deleted', 
                        text: 'Post has been deleted. Returning to the posts page.', 
                        type: 'success'
                    }).then(function() {
                        window.location = 'states.php';
                    });
                }               

                function confirmdelete(){
                    swal({
                        title: 'Delete Post',
                        text: 'Are you sure you want to delete this post? You cannot undo this.',
                        type: 'warning',
                        showCancelButton: true,
                        confirmButtonText: 'Delete Post',
                        cancelButtonText: 'Cancel'
                    }).then((result) => {
                      if (result.value) {
                          deletepost();
                      }else{
                          dontdeletepost();
                      }
                    })
                }
            </script>

        <title>Mountain Biking In The US!!</title>
    </head>
    <body>
        <?php
            echo "<script>confirmdelete();</script>";
        ?>
    </body>
</html>

****编辑****

感谢到目前为止的所有答复。

我修改了体内的代码,取出了php,然后按如下所示保留了javascript代码(尽管我认为这不会改变代码的运行方式,只是意识到我不需要php标签):

<body>
    <script>confirmdelete();</script>;
</body>

我了解到PHP会在Javascript之前加载,但是让我看看我的想法是否正确。

页面加载后,它将加载PHP函数,但在调用它们之前,不应运行它们。

然后,将加载javascript,这时将运行confirmdelete javascript函数,从而创建Sweetalert2确认框。如果我单击Delete Post,它应该运行deletepost javascript函数,并且此时应调用deletepostphp php函数。

如果我单击“取消”,则应运行dontdeletepostphp php函数。

我不认为php函数正在运行,直到Sweetalert2提示弹出并做出选择后,才不确定为什么两个函数都在运行。我以为php函数直到被调用才真正运行。我只用php代码加载了页面,但这些函数没有按要求运行,没有被调用。

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:-2)

您正在将php函数放入javascript变量中,首先,一个javascript变量不回显就不接受php变量。 而且您的编码风格也不佳,请同时为php和javascript创建外部文件。