简体   繁体   English

删除确认HREF Sweet Alert

[英]Delete confirmation HREF Sweet Alert

A possible duplicate of this link 该链接可能重复

But I can't seem to solve this issue with the same logic from that forum. 但是我似乎无法使用该论坛中的相同逻辑来解决此问题。

I'm working on a booking module and it has a function whether to confirm or cancel a booking. 我正在开发一个预订模块,它具有确认取消预订的功能。 Here is my PHP code that tells if booking is confirmed, cancelled or not yet confirmed. 这是我的PHP代码,告诉您预订是否已确认,取消或尚未确认。 Status==0 (Not Confirmed yet) - default one, Status==1 (Confirmed) and Status==2 (Cancelled) Status==0 (尚未确认)-默认值, Status==1 (已确认)和Status==2 (已取消)

<?php
session_start();
error_reporting(0);
include('includes/config.php');
if(strlen($_SESSION['alogin'])==0)
    {   
header('location:index.php');
}
else{
if(isset($_REQUEST['eid']))
    {
$eid=intval($_GET['eid']);
$status="2";
$sql = "UPDATE tblbooking SET Status=:status WHERE  id=:eid";
$query = $dbh->prepare($sql);
$query -> bindParam(':status',$status, PDO::PARAM_STR);
$query-> bindParam(':eid',$eid, PDO::PARAM_STR);
$query -> execute();

$msg="Booking Successfully Cancelled";
}

if(isset($_REQUEST['aeid']))
    {
$aeid=intval($_GET['aeid']);
$status=1;

$sql = "UPDATE tblbooking SET Status=:status WHERE  id=:aeid";
$query = $dbh->prepare($sql);
$query -> bindParam(':status',$status, PDO::PARAM_STR);
$query-> bindParam(':aeid',$aeid, PDO::PARAM_STR);
$query -> execute();

$msg="Booking Successfully Confirmed";
}

<?php $sql = "SELECT tblbooking.Status";
$query = $dbh -> prepare($sql);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
$cnt=1;
if($query->rowCount() > 0){
  foreach($results as $result){
?>
if($result->Status==0){
echo htmlentities('Not Confirmed yet');
} else if ($result->Status==1) {
echo htmlentities('Confirmed');
}
else{
echo htmlentities('Cancelled');
}

And this is the ORIGINAL code that will confirm/cancel the booking with basic Javascript alert 这是原始代码,将使用基本的Javascript警报来确认/取消预订

<td><button class="btn btn-sm btn-primary"><a href="manage-bookings.php?aeid=<?php echo htmlentities($result->id);?>" onclick="return confirm('Do you really want to Confirm this booking')"> <i style="color: #fff;" class='fa fa-check'></i></a></button>

<button class="btn btn-sm btn-danger"><a href="manage-bookings.php?eid=<?php echo htmlentities($result->id);?>" onclick="return confirm('Do you really want to Cancel this booking')"> <i style="color: #fff;" class='fa fa-close'></i></a></button></td>

But I want to use sweetalert so I modified it to this (testing it first with just anchor) 但是我想使用sweetalert,所以我对此进行了修改(首先使用锚进行测试)

<a href="manage-bookings.php?aeid=<?php echo htmlentities($result->id);?>" onclick="confirmation(event)">Confirm</a>

And this is the script 这是script

<script>
    function confirmation(ev) {
ev.preventDefault();
var urlToRedirect = ev.currentTarget.getAttribute('href'); //use currentTarget because the click may be on the nested i tag and not a tag causing the href to be empty
console.log(urlToRedirect); // verify if this is the right URL
swal({
  title: "Are you sure you want to tag this booking as confirmed",
  text: "You will not be able to revert this!",
  icon: "warning",
  buttons: true,
  dangerMode: true,
})
.then((willDelete) => {
  // redirect with javascript here as per your logic after showing the alert using the urlToRedirect value
  if (willDelete) {
    swal("Your booking as been confirmed!", {
      icon: "success",
    });
  } else {
    swal("You booking hasn't been confirmed.");
  }
});
}
</script>

The problem is, the alert works. 问题是,警报起作用。 It creates a pop up confirmation but it doesn't confirm/cancel the booking at all although the href links says the same thing with the original but the original reloads the page and the tagging works. 它会创建一个弹出确认,但它不会完全确认/取消预订,尽管href链接与原始链接说的是相同的内容,但原始链接会重新加载页面并进行标记。

It looks to me like you are never actually sending any data back to the server. 在我看来,您实际上从未真正将任何数据发送回服务器。

The built in javascript confirm dialog interrupts your hyperlink and then allows it to resume after you hit OK. 内置的javascript确认对话框会中断您的超链接,然后在您单击“确定”后恢复它。

It appears that Sweetalerts don't do the same. 看起来Sweetalerts不会这样做。 So you are never redirecting to the page you need to get to. 因此,您永远不会重定向到需要访问的页面。 You could use javascript to redirect to the correct URL or, you could write a server-side API for the action you are trying to take, and call that API from AJAX inside of the 'willDelete' case. 您可以使用javascript重定向到正确的URL,或者可以为要执行的操作编写服务器端API,然后在“ willDelete”案例中从AJAX调用该API。

Here's the former option: 这是前一个选项:

<script>
    function confirmation(ev) {
        ev.preventDefault();
        var urlToRedirect = ev.currentTarget.getAttribute('href'); //use currentTarget because the click may be on the nested i tag and not a tag causing the href to be empty
        console.log(urlToRedirect); // verify if this is the right URL
        swal({
            title: "Are you sure you want to tag this booking as confirmed",
            text: "You will not be able to revert this!",
            icon: "warning",
            buttons: true,
            dangerMode: true,
        })
        .then((willDelete) => {
            if (willDelete) {
                // redirect with javascript here as per your logic after showing the alert using the urlToRedirect value
                window.location.href = urlToRedirect;
            } else {
                swal("You booking hasn't been confirmed.");
            }
        });
    }
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM