在Laravel 5.8中使用Sweet Alert 2删除确认

时间:2019-11-14 20:51:54

标签: php jquery ajax laravel

这是我的按钮:

<button class="btn btn-danger" onclick="deleteConfirmation({{$wp->id}})" id="{{$wp->id}}" data-id="{{$wp->id}}"><i class="fa fa-trash"></i></button> 

这是我的jquery + ajax代码:

function deleteConfirmation(id) {
    swal.fire({
        title: "Usunąć wypis?",
        text: "Upewnij się czy chcesz usunąć ten wypis!",
        type: "warning",
        showCancelButton: !0,
        confirmButtonText: "Tak, usuń go!",
        cancelButtonText: "Nie, anuluj!",
        reverseButtons: !0
    }).then(function (e) {

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

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

                    if (results.success === true) {
                        swal.fire("Usunięto wypis!", results.message, "success");
                    } else {
                        swal.fire("Wystąpił błąd!", results.message, "error");
                    }
                }.then(function() {
                            location.reload();
                        });
            });

        } else {
            e.dismiss;
        }

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

这是我的Laravel控制器函数destroy()

public function destroy(Request $request, $id)
{
    //
    $delete = \App\Wypisy::where('id', $id)->delete();
    return back();
    // check data deleted or not
    if ($delete == 1) {
        $success = true;
        $message = "Wypis został usunięty !";
    } else {
        $success = true;
        $message = "Wypisu nie znaleziono";
    }

    //  Return response
    return response()->json([
        'success' => $success,
        'message' => $message,
    ]);
    return back();
}

当我单击按钮时,向我显示确认窗口,然后单击将其删除,我将收到消息jquery.min.js:2 POST http://localhost:8000/przedsiebiorca/wypisy/3 404(未找到)未发生。当我复制上面的链接时,删除方法在Laravel中可以正常工作。我究竟做错了什么 ?有提示吗?

Laravel 5.8,jquery 3.4.1

2 个答案:

答案 0 :(得分:0)

如果您通过id传递POST

您的Ajax函数:

 // code ...
 type: 'POST',
      url: "{{url('/przedsiebiorca/wypisy/destroy')}}",
      data:  {"_token": "{{ csrf_token() }}", "id": id},
      dataType: 'JSON',
      success: function (results) {

// code ...

您的路线:

Route::post('/przedsiebiorca/wypisy/destroy', 'WypisyController@destroy');

您的控制器

public function destroy(Request $request)
{
    //
    $id = $request->id;
    $delete = \App\Wypisy::where('id', $id)->delete();

    // code ...

答案 1 :(得分:0)

当我为此更改代码

 function deleteConfirmation(id) {
    swal.fire({
        title: "Usunąć wypis?",
        text: "Upewnij się czy chcesz usunąć ten wypis!",
        type: "warning",
        showCancelButton: !0,
        confirmButtonText: "Tak, usuń go!",
        cancelButtonText: "Nie, anuluj!",
        reverseButtons: !0
    }).then(function (e) {

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

            $.ajax({
                type: 'POST',
                url: "{{url('/przedsiebiorca/wypisy/destroy')}}",
                data:  {"_token": "{{ csrf_token() }}", "id": id},
                dataType: 'JSON',
                success: function (results) {

                    if (results.success === true) {
                        swal.fire("Usunięto wypis!", results.message, "success");
                    } else {
                        swal.fire("Wystąpił błąd!", results.message, "error");
                    }
                }
            });

        } else {
            e.dismiss;
        }

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

我在控制台中调音:

 jquery.min.js:2 POST http://localhost:8000/przedsiebiorca/wypisy/destroy 
 500 (Internal Server Error)
 send @ jquery.min.js:2
 ajax @ jquery.min.js:2
 (anonymous) @ (index):395
 Promise.then (async)
 ue.then @ sweetalert.all.js:1
 deleteConfirmation @ (index):390
 onclick @ (index):173