Sweet-alert在Laravel中确认后如何删除...?

时间:2019-03-06 07:04:11

标签: javascript php laravel-5 sweetalert

我已为我的确认消息链接了sweetalert插件。但是它没有收到确认命令(单击“是/确认”按钮)。

这是我的删除按钮:

<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();

    }

请给我解决方法...

2 个答案:

答案 0 :(得分:1)

尝试一下

用于删除按钮:---

 <a href="" class="button" data-id="{{$websiteType->id}}"><i class="far fa-trash-alt"></i></a>

在Jquery中

$(document).on('click', '.button', function (e) {
    e.preventDefault();
    var id = $(this).data('id');
    swal({
            title: "Are you sure!",
            type: "error",
            confirmButtonClass: "btn-danger",
            confirmButtonText: "Yes!",
            showCancelButton: true,
        },
        function() {
            $.ajax({
                type: "POST",
                url: "{{url('/setting/website_type/destroy')}}",
                data: {id:id},
                success: function (data) {
                              //
                    }         
            });
    });
});

public function destroy(Request $request)
{
    $delete_website_type = WebsiteType::find($request->id)->delete();
    return redirect()->route('website.index')
                    ->with('success','Website deleted successfully');
}

我已经更新我的答案,尝试这个。

答案 1 :(得分:1)

您必须输入.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);