Laravel 5.6 и JQuery не удаляют записи - PullRequest
0 голосов
/ 05 июня 2018

Я создаю веб-страницу, используя Laravel 5.6.Я закодировал на веб-страницу, которая является ПолисомПоле id - это Foreign Key.Это из Policies таблицы.Но когда я запускаю и нажимаю кнопку удаления, запись не удаляется, и я получаю сообщение об ошибке "Internal server Error и Error:1 GET http://127.0.0.1:8000/Error 404 (Not Found)"

database records

Error

Console output

policycover.blade.php

<td>
    <button type="button" class="btn btn-danger btn-xs delpolicycover" data-id="{{$value->id}}"><i class="fa fa-trash"></i>Delete</button>
</td>

Маршрут

Route::post('/delpolicycoverdata', 'PolicyCoverController@destroy')->name('delpolicycoverdata');

dashboard.blade.php

<script>
    $(document).on('click', '.delpolicycover', function()
    {
        swal(
            {
                title: "Are you sure?",
                text: "Once deleted, you will not be able to recover this imaginary file!",
                icon: "warning",
                buttons: true,
                dangerMode: true,
            })
            .then((willDelete) =>
            {
                if (willDelete)
                {
                    var deldata = new FormData();
                    console.log($("#tokenedit").val());

                    deldata.append('id', $(this).data('id'));
                    console.log('id', $(this).data('id'));

                    deldata.append('_token', $("#tokenedit").val());
                    $.ajax(
                    {
                        type: "post",
                        data: deldata,
                        cache: false,
                        processData: false,
                        contentType: false,
                        url: "<?php  echo url('/delpolicycoverdata') ?>",
                        success: function(data)
                        {
                            swal("Poof! Your imaginary file has been deleted!",
                            {
                                icon: "success",
                            });
                            $('#brc' + data).remove();
                        },
                        error: function(json)
                        {
                            console.log(json);
                            swal("Error!!",
                            {
                                icon: "Error",
                            });
                        }
                    });
                }
                else
                {
                    swal("Your imaginary file is safe!");
                }
            });
    });

    $(document).on("click", ".viewpolicycover", function()
    {

        $('#vieid').val($(this).data('id'));
        $('#viname').val($(this).data('name'));
        $('#videscr').val($(this).data('descr'));
        $('#policyviewmodel').modal('show');

    }); 
    </script>

PolicyCoverController.php

public function destroy(Request $request)
    {
        $policycover = PolicyCover::find($request->id);
        $policecover->delete();
        return response()->json($request->id);
    }

1 Ответ

0 голосов
/ 05 июня 2018

Вам нужно защитить agaistn csrf при выполнении запроса на публикацию с помощью ajax, поэтому сначала добавьте это в свой HTML

<meta name="csrf-token" content="{{ csrf_token() }}">

Вам также необходимо правильно настроить свой URL, попробуйтечтобы не смешивать php и js.

Тогда в вашем ajax вы можете сделать это:

                var idToBeDeleted = $(this).data('id');
                $.ajax(
                {
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                    },
                    type: "post",
                    data: [ id: idToBeDeleted ],
                    url: '/delpolicycoverdata',
                    success: function(data)
                    {
                        swal("Poof! Your imaginary file has been deleted!",
                        {
                            icon: "success",
                        });
                        $('#brc' + data).remove();
                    },
                    error: function(json)
                    {
                        console.log(json);
                        swal("Error!!",
                        {
                            icon: "Error",
                        });
                    }
                });

Подробнее о защите csrf вы можете узнать на официальных документах laravel

Также я бы предложил использовать findOrFail на вашем контроллере, чтобы ваша ошибка была обработана обработчиком ошибок laravel:

public function destroy(Request $request)
{
    $policycover = PolicyCover::findOrFail($request->id);
    $policecover->delete();
    return response()->json($request->id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...