Невозможно получить данные из ajax в laravel - PullRequest
2 голосов
/ 25 сентября 2019

Невозможно получить данные из ajax в laravel.Вот мой код для всех моих файлов, которые я использую

-------- Мой взгляд, откуда я получаю этот вызов функции -----

<input type="date" min="" class="form-control" id="checkoutdate" name="checkoutdate" onchange="checkdate()" required>


and my if part is working fine 


------- Custom.js------------- Where I wrote my own javascript

    function checkdate()
    {
        var checkindate = document.getElementById("checkindate").value;
        var checkoutdate = document.getElementById("checkoutdate").value;

        if(checkindate> checkoutdate)
        {
            alert("Checkout date error please correct it");
            document.getElementById('checkoutdate').value = checkindate;
            stop();
        }
        else
        {
            $.ajax({
                url: '/checkavailability',
                type: 'POST',
                dataType: 'json',
                data:{checkin: $('#checkindate').val(), checkout: $('#checkoutdate').val()}, // the value of input having id vid
                success: function(response){ // What to do if we succeed
                    alert($arr);
                }
            });
        }

------- Маршрут, который я определил ------------

    Route::post('/checkavailability','BookingController@check');

----------- Моя функция контроллера ------

 public function check(Request $request)
    {
       $data = $request->all();
        $checking = DB::table('bookings')->get();
        $arr = "first sucess request";
        return Response()->json($arr);
    }

функция проверки только для проверки, но она не работает

в консоли моего браузера, она выдает ошибку Не удалось загрузить ресурс: сервер ответил со статусом419 (неизвестный статус)

Ответы [ 4 ]

2 голосов
/ 25 сентября 2019

419 ошибка отсутствует CSRF токен.при использовании почтового запроса вы должны отправить токен csrf.

$.ajax({
    url: '/checkavailability',
    type: 'POST',
    dataType: 'json',
    data:{_token: {{ csrf_token() }}, checkin: $('#checkindate').val(), checkout: $('#checkoutdate').val()}, 
    success: function(response){ // What to do if we succeed
        alert($arr);
    }
});
2 голосов
/ 25 сентября 2019

419 ошибка происходит, когда вы не публикуете csrf_token.в вашем методе post вы должны добавить этот токен вместе с другими переменными.Добавьте csrf_token в запрос ajax.Надеюсь, что это исправит ошибку

Как добавить токен csrf в ваш запрос ajax?

Сначала добавьте этот метатег в ваш основной макет

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

Затем вы можете получить токен csrf из этого мета-тега в своем запросе ajax

 var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
        var name = $("#name").val();
        $.ajax({
            url: '/checkavailability',
            type: 'POST',
            dataType: 'json',
            data:{_token: CSRF_TOKEN, checkin: $('#checkindate').val(), checkout: $('#checkoutdate').val()}, // the value of input having id vid
            success: function(response){ // What to do if we succeed
                alert($arr);
            }
        });

Надеюсь, он вам поможет.

1 голос
/ 25 сентября 2019

Вы должны передать csrf_token вместе с запросом POST

, см. Следующий код, первое значение данных - токен csrf

    $.ajax({
        url: '/checkavailability',
        type: 'POST',
        dataType: 'json',
        data:{"_token":"{{ csrf_token() }}", checkin: $('#checkindate').val(), checkout: $('#checkoutdate').val()}, // the value of input having id vid
        success: function(response){ // What to do if we succeed
            alert($arr);
        }
    });
1 голос
/ 25 сентября 2019

Возможно, вам не хватает csrf_token в вашем файле просмотра.Добавьте следующее в тег head в верхней части файла представления.

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

И также не забудьте добавить строки в запросе ajax для отправки csrf_token

$.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...