首页 > 解决方案 > 如何在 Laravel 中通过 Sweet-alert 确认后删除...?

问题描述

我已经为我的确认消息链接了 sweetalert 插件。但它没有得到确认命令(onclick yes/confirm 按钮)。

这是我的删除按钮:

<a id="demoSwal" href="{{ route('setting.website_type.destroy', ['id' => $websiteType->id]) }}" class="btn btn-light btn-sm btn-delete demoSwal" data-toggle="tooltip" data-placement="top" title="Delete This Type"><i class="far fa-trash-alt"></i></a>

这是我的 JS 代码:

$(document).ready(function(){
    $('.demoSwal').click(function(){
            swal({
                title: "Are you sure?",
                text: "You will not be able to recover this file!",
                type: "warning",
                showCancelButton: true,
                confirmButtonText: "Yes, delete it!",
                cancelButtonText: "No, cancel plx!",
                closeOnConfirm: false,
                closeOnCancel: false
            },
            function(isConfirm) {
                if (isConfirm) {
                    swal("Deleted!", "Your Data file has been deleted.", "success");
                } else {
                    swal("Cancelled", "Your Data file is safe :)", "error");
                }
            });
        });
});

这是我的控制器代码:

public function destroy($id)
    {
        $delete_website_type = WebsiteType::find($id);
        $delete_website_type->delete();

        return redirect()->back();

    }

请给我解决方案...

标签: javascriptphplaravel-5sweetalert

解决方案


你必须把 .then()

let id = $("#your_id").val();
swal({
    title: "Are you sure?",
    text: "You will not be able to recover this file!",
    type: "warning",
    showCancelButton: true,
    confirmButtonText: "Yes, delete it!",
    cancelButtonText: "No, cancel plx!",
    closeOnConfirm: false,
    closeOnCancel: false
 }).then((isConfirm) => {
        if(isConfirm) {
               //you can just use fetchAPI 
               fetch(`route_to_your_destroy_method/${id}`)
               .then(response => response.json()
               .then(result => {
                     //your result
                      if (result == 'success') {
                          //alert success
                      }else {
                           //alert fail
                      }
                }).catch(err => {console.log(err)});
        }
 });

在你的销毁方法中

$delete_website_type = WebsiteType::find($id)->delete();
 if(delete_website_type) {
    $message = 'success';
 }else {
     $message = 'fail';
 }
  return json_encode($message);

推荐阅读