正在发生什么,我的页面上有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代码加载了页面,但这些函数没有按要求运行,没有被调用。
再次感谢您的帮助。
答案 0 :(得分:-2)
您正在将php函数放入javascript变量中,首先,一个javascript变量不回显就不接受php变量。 而且您的编码风格也不佳,请同时为php和javascript创建外部文件。