Laravel AJAX поставить запрос возврата 500 внутренняя ошибка сервера - PullRequest
0 голосов
/ 10 января 2019

У меня на консоли браузера есть эта ошибка: «PUT http://localhost:8000/post/2 500 (Внутренняя ошибка сервера)»

Я использую контроллер ресурсов и мой маршрут Route :: resource ('post', 'PostController');

Вот код контроллера ресурса для поста обновления:

public function update(Request $request, $id)
{
        $post = Post::findOrFail($id);
        $post->name = $request->name;
        $post->content = $request->content;
        $post->save();
        return response()->json($post);
}

Вот мой код просмотра:

<form class="form-horizontal" role="form">
    <div class="form-group">
        <input type="text" class="none" id="id">
        <label class="control-label col-sm-2">Name:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="name">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2">content:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="content">
        </div>
    </div>
    <div class="form-group">
        <input type="submit" value="Edit" onclick="mainCatEdit();">
    </div>
</form>

Код Ajax:

function mainCatEdit() {
    $.ajax({
        url: '/maincategory/'+id,
        type: 'PUT',
        data: {
            '_token': $('input[name=_token]').val(),
            'id': $('#id').val(),
            'name': $('#name').val(),
            'content': $('#content').val()
        },
        success:function(data) {
            console.log(data);
        }
    });
}

кстати, я использую метакен {{csrf_token ()}} в заголовке моего файла. но я получаю 500 внутренних ошибок сервера на localhost.so кто-то мне помочь.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

вы пытаетесь получить значение токена, который вы не установили, давайте посмотрим на ваш код снова без тестирования, просто попробуйте это установите это в верхней части своей страницы под метатегами

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

тогда ваш ajax должен быть

function mainCatEdit() {
$.ajaxSetup({
headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
$.ajax({
    url: '/maincategory/'+id,
    type: 'PUT',
    data: {
        'id': $('#id').val(),
        'name': $('#name').val(),
        'content': $('#content').val()
    },
    success:function(data) {
        console.log(data);
    }
});

}

Надеюсь, это поможет

0 голосов
/ 10 января 2019

Вы забыли заполнить данные своей модели, сделайте это:

public function update(Request $request, $id)
{
        $post = Post::findOrFail($id);
        $post->fill([
            $post->name = $request->name;
            $post->content = $request->content;
        ]);
        $post->save();
        return response()->json($post);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...