laravel sweetalert2 Uncaught TypeError: Cannot call a class as a function

8.7k Views Asked by At

I have this for implementing sweetalert2 testing. However, it throws Uncaught TypeError: Cannot call a class as a function Any idea?

<html lang="en">
<head>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.all.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@10/dist/sweetalert2.min.css" id="theme-styles">
</head>

<body>
<div class="col-md-12">
<button class="btn btn-danger btn-flat btn-sm remove-user" data-id="{{ $category->id }}" data-action="{{ route('category.destroy',$category->id) }}" > Delete jq</button>
</div>

    <script type="text/javascript">

    $(document).ready(function(){

        $('.remove-user').click(function(){

            id = $(this).attr('data-id');

            /*
            Swal.fire({
            title: 'Error!',
            text: 'Do you want to continue',
            icon: 'error',
            confirmButtonText: 'Cool'
            });
            */

            
            swal({
                title: "Delete?",
                text: "Please ensure and then confirm!",
                type: "warning",
                showCancelButton: !0,
                confirmButtonText: "Yes, delete it!",
                cancelButtonText: "No, cancel!",
                reverseButtons: !0
            }).then(function (e) {

                if (e.value === true) {
                    var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');

                    $.ajax({
                        type: 'POST',
                        url: "{{url('/category')}}/" + id,
                        data: {_token: CSRF_TOKEN},
                        dataType: 'JSON',
                        success: function (results) {

                            if (results.success === true) {
                                swal("Done!", results.message, "success");
                            } else {
                                swal("Error!", results.message, "error");
                            }
                        }
                    });

                } else {
                    e.dismiss;
                }

            }, function (dismiss) {
                return false;
            });            
            
        });
               

    });
    </script>

</body>

further update

when I try with this version 7.2.0 given by tutorial page, it works. https://www.nicesnippets.com/blog/laravel-sweet-alert2-confirm-delete-example

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.2.0/sweetalert2.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.2.0/sweetalert2.all.min.js"></script>

Now I guess the latest version 10.5.0 for sweetalert2 no longer support this way of writing...

2

There are 2 best solutions below

3
On

try this


<html lang="en">
<head>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.all.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@10/dist/sweetalert2.min.css" id="theme-styles">
</head>

<body>
<div class="col-md-12">
<button class="btn btn-danger btn-flat btn-sm remove-user" data-id="22" > Delete jq</button>
</div>

    
</body>
<script type="text/javascript">

    $(document).ready(function(){

        $('.remove-user').click(function(){

            let id = $(this).attr('data-id');
        
                        Swal.fire({
                  title: "Are you sure?",
                  text: "You will not be able to recover this imaginary file!",
                  type: "warning",
                  showCancelButton: true,
                  confirmButtonColor: "#DD6B55",
                  confirmButtonText: "Yes, delete it!",
                  cancelButtonText: "No, cancel plx!",
                  closeOnConfirm: false,
                  closeOnCancel: false 
              },
              function(isConfirm) {
                  if (isConfirm) {
                      swal("Deleted!", "Your imaginary file has been deleted.", "success");
                  } else {
                      swal("Cancelled", "Your imaginary file is safe :)", "error");
                  }
              }
          );

            
                   
            
        });
               

    });
    </script>

</html>

hear is working code link.. https://jsfiddle.net/ar24cpq6/

0
On

For sweetalert2, Use in this way

 Swal.fire({
    title: 'Error!',
    text: 'Do you want to continue',
    icon: 'error',
    confirmButtonText: 'Cool'
}).then((result) => {
    if (result.isConfirmed)
        swal.fire("Done!", "It was succesfully deleted!", "success");
    else
        swal.fire("Error!", "Coudn't delet!", "error");
});