Не удалось загрузить ресурс: сервер ответил с состоянием 500 (Внутренняя ошибка сервера) в ajax с laravel - PullRequest
0 голосов
/ 15 сентября 2018

файл app.jss

$('#modal-save').on('click', function(){

    // geting the properties
    $.ajax({
        method:'POST',
        url: url,
        data: {body: $('#post-body').val(), postId: postId , _token: token}
    })

    // after done
    .done(function(msg) {
        $(postBodyElement).text(msg['new_body']);
        $('#edit-modal').modal('hide')
    });
});

код моего сценария в представлении

<script>
    var token = '{{ Session::token() }}';
    var url = '{{ route('edit') }}';
</script>

Файл маршрута

Route::post('/edit', [
    'uses'=>'PostController@postEditPost',
    'as'=>'edit'
]);

Файл моего контроллера

public function postEditPost( Request $request)
{
    $this->validate($request,[
        'body' => 'required'
    ]);

    // checking auth user
    $post = Post::find($request['postId']);
    if(Auth::user != $post->user){
        return redirect()->back();
    }

    // updating the post content
    $post->body = $request['body'];
    $post->update();
    return response()->json(['new_body' => $post->body], 200);
}

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Из-за промежуточного программного обеспечения VerifyCsrfToken необходимо предоставить токен CSRF с каждым запросом post, put, delete.

Добавить метатег внутри head тэг

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

Тогда используйте его в вашем ajax-запросе

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

См. X-CSRF-TOKEN

0 голосов
/ 15 сентября 2018

Вы отправляете ajax-запрос на сервер, но не принимаете его как в контроллере. Попробуйте это:

    // updating the post content
    $post->body = $request['body'];
    $post->update();

    if(request()->expectsJson()){
      return response()->json(['new_body' => $post->body], 200);
      }

     //here you can return to whereever you need it if its not ajax
    return redirect('/');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...