javascript - Laravel 5.2 - Sweet Alert 确认框

标签 javascript php jquery laravel-5 sweetalert

我在 View 中列出了类别。 View 中也有一个删除类别按钮,它可以工作并在单击时删除类别。

我想做的是在删除类别之前,弹出一个甜蜜的警告对话框并要求确认。如果确认,它应该去定义的路由并删除类别。

删除链接定义如下:

<a id="delete-btn" href="{{ route('admin.categories.destroy', $category->id) }}" class="btn btn-danger">Delete</a>

脚本定义如下:

<script> 
    $(document).on('click', '#delete-btn', function(e) {
        e.preventDefault();
        var link = $(this);
        swal({
            title: "Confirm Delete",
            text: "Are you sure to delete this category?",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Yes, delete it!",
            closeOnConfirm: true
         },
         function(isConfirm){
             if(isConfirm){
                window.location = link.attr('href');
             }
             else{
                swal("cancelled","Category deletion Cancelled", "error");
             }
         });
    });
</script>

但是,当我单击删除按钮时,它会删除该类别,但不会显示甜蜜的警报消息。

路由定义如下:

Route::get('/categories/destroy/{category}', [
    'uses' => 'CategoriesController@destroy',
    'as' => 'admin.categories.destroy',
]);

Controller 函数定义为:

public function destroy(Category $category) 
{

    $category->delete();

    //this alert is working fine. however, the confirmation alert should appear 
    //before this one, which doesn't
    Alert::success('Category deleted successfully', 'Success')->persistent("Close");

    return redirect()->back();
}

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

试试这个:

<script>
    var deleter = {

        linkSelector : "a#delete-btn",

        init: function() {
            $(this.linkSelector).on('click', {self:this}, this.handleClick);
        },

        handleClick: function(event) {
            event.preventDefault();

            var self = event.data.self;
            var link = $(this);

            swal({
                title: "Confirm Delete",
                text: "Are you sure to delete this category?",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Yes, delete it!",
                closeOnConfirm: true
            },
            function(isConfirm){
                if(isConfirm){
                    window.location = link.attr('href');
                }
                else{
                    swal("cancelled", "Category deletion Cancelled", "error");
                }
            });

        },
    };

    deleter.init();
</script>

编辑:根据您对@kalyan-singh-rathore 的回答的评论,我认为您没有正确地将脚本注入(inject) Blade 模板。如果您要扩展基本布局,请确保您已包含脚本或从子布局中生成它。

关于javascript - Laravel 5.2 - Sweet Alert 确认框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189570/

相关文章:

javascript - 访问位置/键 0 处的 JavaScript 对象

php - Facebook 架构和数据库 ID 的起始量为数万亿

php - 使用 OAuth2.0 的 C2DM 和 PHP(不推荐使用 ClientLogin!)

javascript - 相同的 JQuery 函数适用于一个链接,不适用于另一个链接

javascript - 从 JQuery 中的输入数组获取正确的索引

页面的 jQuery 加载主体

javascript - DROPZONE - 在文件上传期间处理 AJAX 请求中的 session 超时

javascript - 在javascript中访问对象数组的值

javascript - 不能在函数中返回值/变量

php - 如何根据 MySQL 和 PHP 中显示的行更新值