Мой Ajax продолжает возвращать 419 и 500 ошибок - PullRequest
0 голосов
/ 21 апреля 2019

Я делаю форму, которая вызывается Ajax, и пытаюсь настроить форму для отправки с использованием Ajax.Эта форма предназначена для отправки данных по маршруту ('ruangrapat.store).Но каждый раз, когда я отправляю форму, она возвращает статус 419, когда я не использую csrf_token () в Ajax и если я использую csrf_token () в Ajax.Всегда возвращает 500 внутреннюю ошибку сервера.Может ли кто-нибудь помочь мне решить эту проблему?Я читал почти все обсуждения, которые я нашел в Интернете, но до сих пор не получил ответа.

Возможно, я пропустил что-то важное в своем коде.Пожалуйста, просмотрите мой код.

//ajax
$(document).ready(function(){
             $('#form-ruangrapat').on('submit',function(e){

            e.preventDefault();
             var formdata=$('#form-ruangrapat').serialize();//should i do this??
//if i should take the value of inputs 1 by 1,please show me the proper way

             var token="{!!csrf_token()!!}"
            $.ajax({ 
                url:"{{route('ruangrapat.store')}}",
                data: {formData:formdata,_token:token},
                type:'post',
                success:function(result){
                    $('#result').html(result);
                }
            });
        });
        });


//controller
public function store(Request $request)
    {
        $data = new Ruangrapat();
       ...
        $data->contact = $request->get('contact');
        $data->save();
        return view('ajax-result.ruangrapat.index')->with('status', 'Ruang rapat baru berhasil ditambahkan!');
//is this return value correct??

    }

//route
Route::resource('ruangrapat', 'RuangrapatController');

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Первая рекомендация

Чтобы сделать любой AJAX-запрос, рекомендуется добавить токен CSRF в заголовок AJAX-запросов.

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

В соответствии с документацией Laravel

Вторая рекомендация

Чтобы узнать, что отправляется запрос ajax, я бы посоветовал контроллеру вернуть вам данные и просмотреть их через веб-консоль.

$(document).ready(function(){
    $('#form-ruangrapat').on('submit',function(e){
        e.preventDefault();
        var formdata=$('#form-ruangrapat').serialize();
        var token="{!!csrf_token()!!}";
        $.ajax({
            url:"{{route('ruangrapat.store')}}",
            data: {formData:formdata,_token:token},
            type:'post',
            dataType:'JSON',
            //You can use sucess or done, personally i like more done
        }).done(function (data) {
            console.log(data)
        });
    });
});

А в контроллере

public function store(Request $request)
{
    return response()->json($request->input());
}

Другим вариантом является использование сетевого монитора браузеров и просмотр отправляемых переменных.

0 голосов
/ 22 апреля 2019

У меня была такая же проблема, 419 сопоставляется с токеном csrf, когда вы исправили его, запрос отправляется на сервер, поэтому внутренняя ошибка 500 сервера говорит, что при сохранении возникла проблема, поэтому посмотрите в функцию store в контроллере и убедитесь, что все процессы выполняются правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...