Ошибка 405: метод не разрешен, маршрут EditUser не может получить информацию - PullRequest
0 голосов
/ 04 июня 2018

Итак, я изучал Laravel и занялся созданием DataTables.Однако мой маршрут «editItem» не может получить никакой информации, когда я нажимаю кнопку «Изменить».Отображается ошибка 405.

представление DataTable (dt.blade.php) -

HTML-часть, где отображается таблица

<div class="table-responsive text-center">
    <table class="table table-borderless" id="table">
        <thead>
            <tr>
                <th class="text-center">ID</th>
                <th class="text-center">Name</th>
                <th class="text-center">Created At</th>
                <th class="text-center">Updated At</th>
                <th class="text-center">Actions</th>
            </tr>
        </thead>
        @foreach($users as $user)
        <tr class="user{{$user->id}}">
            <td >{{$user->id}}</td>
            <td>{{$user->name}}</td>
            <td>{{$user->created_at}}</td>
            <td>{{$user->updated_at}}</td>
            <td><button class="edit-modal btn btn-info"
                    value="{{$user->id}},{{$user->name}}">
                    <span class="glyphicon glyphicon-edit"></span> Edit
                </button>
                <button class="delete-modal btn btn-danger"
                    value="{{$user->id}},{{$user->name}}">
                    <span class="glyphicon glyphicon-trash"></span> Delete
                </button></td>
        </tr>
        @endforeach
    </table>
</div>

JS-часть в том же файле

    <script>
    $(document).ready(function() {
    $('#table').DataTable();
    } );
    </script>

    <script>

    $(document).on('click', '.edit-modal', function() {
        $('#footer_action_button').text("Update");
        $('#footer_action_button').addClass('glyphicon-check');
        $('#footer_action_button').removeClass('glyphicon-trash');
        $('.actionBtn').addClass('btn-success');
        $('.actionBtn').removeClass('btn-danger');
        $('.actionBtn').removeClass('delete');
        $('.actionBtn').addClass('edit');
        $('.modal-title').text('Edit');
        $('.deleteContent').hide();
        $('.form-horizontal').show();
        var stuff = $(this).val().split(',');
        console.log($(this).val());
        fillmodaluser(stuff)
        $('#myModal').modal('show');
    });
    $(document).on('click', '.delete-modal', function() {
        $('#footer_action_button').text(" Delete");
        $('#footer_action_button').removeClass('glyphicon-check');
        $('#footer_action_button').addClass('glyphicon-trash');
        $('.actionBtn').removeClass('btn-success');
        $('.actionBtn').addClass('btn-danger');
        $('.actionBtn').removeClass('edit');
        $('.actionBtn').addClass('delete');
        $('.modal-title').text('Delete');
        $('.deleteContent').show();
        $('.form-horizontal').hide();
        var stuff = $(this).val().split(',');
        console.log($(this).val('info'));
        $('.did').text(stuff[0]);
        $('.dname').html(stuff[1]);
        $('#myModal').modal('show');
    });

    function fillmodaluser(details){
    $('#fid').val(details[0]);
    $('#name').val(details[1]);
    }

    $('.modal-footer').on('click', '.edit', function() {

        $.ajax({
            type: 'post',
            url: '../public/editUser',
            user: {
                '_token': $('input[name=_token]').val(),
                'id': $('#fid').val(),
                'name': $('#name').val()
            },
            success: function(user) {
                if (user.errors){
                    $('#myModal').modal('show');
                    if(user.errors.name) {
                        $('.name_error').removeClass('hidden');
                        $('.name_error').text("Name can't be empty !");
                    }
                    if(user.errors.email) {
                        $('.email_error').removeClass('hidden');
                        $('.email_error').text("Email must be a valid one !");
                    }
                }
                 else {

                     $('.error').addClass('hidden');
                $('.user' + users.id).replaceWith("<tr class='users" + users.id + "'><td>" +users.id + "</td><td>" + users.name+"</td><td>" + "</td><td>" + "</td><td><button class='edit-modal btn btn-info' user-info='" + users.id+","+users.name+"'><span class='glyphicon glyphicon-edit'></span> Edit</button> <button class='delete-modal btn btn-danger' user-info='" + users.id+","+users.name+"' ><span class='glyphicon glyphicon-trash'></span> Delete</button></td></tr>");

                 }}
        });
    });
    $('.modal-footer').on('click', '.delete', function() {

        $.ajax({
            type: 'post',
            url: '../public/deleteUser',
              headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            user: {
                '_token': $('input[name=_token]').val(),
                'id': $('.did').text()
            },
            success: function(user) {
                $('.user' + $('.did').text()).remove();
            }
        });
    });

</script>

И, наконец, web.php

Route::get('/dt', 'UserController@dt');    
Route::get('/editUser', function (Request $request) {
    $rules = array (
            'name' => 'required|alpha',     
    );
    $validator = Validator::make(Input::all(), $rules );
    if ($validator->fails ())
        return Response::json ( array (
            'errors' => $validator->getMessageBag()->toArray () 
        ) );
    else {
        $user->id = User::find ( $request->id );
        $user->name = ($request->name);
        $user->save ();
        return response ()->json ( $user );
    }
});
Route::get ('/deleteUser', function (Request $request) {
    User::find ( $request->id )->delete ();
    return response ()->json ();
});

Мне показывается ошибка JSON: "{"errors":{"name":["The name field is required."]}}"

Мой вопрос таков: информацияможет быть хорошо разделен в JQuery здесь, когда я нажимаю кнопку Edit;он может показать информацию о выбранной мной строке.Я не понимаю, почему одни и те же значения не отправляются моему маршруту editUser?

Ответы [ 2 ]

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

Похоже, ваши URL не должны быть "../public/" (в ваших запросах ajax), но они должны соответствовать тому, что вы ввели в свой файл web.php

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

изменить все методы get для публикации, потому что вы используете post на стороне клиента

    Route::post('/dt', 'UserController@dt');    
Route::post('/editUser', function (Request $request) {
    $rules = array (
            'name' => 'required|alpha',     
    );
    $validator = Validator::make(Input::all(), $rules );
    if ($validator->fails ())
        return Response::json ( array (
            'errors' => $validator->getMessageBag()->toArray () 
        ) );
    else {
        $user->id = User::find ( $request->id );
        $user->name = ($request->name);
        $user->save ();
        return response ()->json ( $user );
    }
});
Route::post ('/deleteUser', function (Request $request) {
    User::find ( $request->id )->delete ();
    return response ()->json ();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...