Попытка получить данные из API с помощью Laravel, jQuery, AJAX - PullRequest
0 голосов
/ 02 ноября 2019

Я впервые пытаюсь настроить API для извлечения данных с помощью AJAX.

1) У меня есть это мой файл web.php

Route::get('/api/times', 'PageController@returnTimes');

2) У меня естьэто в моем контроллере:

public function returnTimes(Request $request)
{
    if ($request->has('date') === true && empty($request->has('date')) === false) {
        //$date = filter_input(INPUT_GET, 'date');
        $date = $request->input('date');
        $result = DB::select('select * from appointments where day = :date', ['date' => $date]);
        $eight_to_nine = $result['8AM_9AM'];
        $nine_to_ten = $result['9AM_10AM'];
        $ten_to_eleven = $result['10AM_11AM'];
        $eleven_to_twelve = $result['11AM_12PM'];
        $twelve_to_one = $result['12PM_1PM'];
        $one_to_two = $result['1PM_2PM'];
        $two_to_three = $result['2PM_3PM'];
        $three_to_four = $result['3PM_4PM'];
        $four_to_five = $result['4PM_5PM'];
        $five_to_six = $result['5PM_6PM'];
        $six_to_seven = $result['6PM_7PM'];
        if ($eight_to_nine != 1) {
            echo "<option value='8AM_9AM'>8:00AM - 9:00AM</option>";
        }
        if ($nine_to_ten != 1) {
            echo "<option value='9AM_10AM'>9:00AM - 10:00AM</option>";
        }
        if ($ten_to_eleven != 1) {
            echo "<option value='10AM_11AM'>10:00AM - 11:00AM</option>";
        }
        if ($eleven_to_twelve != 1) {
            echo "<option value='11AM_12PM'>11:00AM - 12:00PM</option>";
        }
        if ($twelve_to_one != 1) {
            echo "<option value='12PM_1PM'>12:00PM - 1:00PM</option>";
        }
        if ($one_to_two != 1) {
            echo "<option value='1PM_2PM'>1:00PM - 2:00PM</option>";
        }
        if ($two_to_three != 1) {
            echo "<option value='2PM_3PM'>2:00PM - 3:00PM</option>";
        }
        if ($three_to_four != 1) {
            echo "<option value='3PM_4PM'>3:00PM - 4:00PM</option>";
        }
        if ($four_to_five != 1) {
            echo "<option value='4PM_5PM'>4:00PM - 5:00PM</option>";
        }
        if ($five_to_six != 1) {
            echo "<option value='5PM_6PM'>5:00PM - 6:00PM</option>";
        }
        if ($six_to_seven != 1) {
            echo "<option value='6PM_7PM'>6:00PM - 7:00PM</option>";
        }
    }
}

3) И у меня есть это на мой взгляд:

$('.date').change(function () {
    var date = $('.date').val();
    $('#date_summary').html(date);
    if (date == "") {
        $('#date_summary').html('Choose your service date...');
    } else if ($.trim(date) !== '') {
        $.get('/api/times', {
            date: date
        }, function (data) {
            //we send a get by $_GET['date'] with value of date
            var data = data.toString();
            $('#date_data').html(data);
            //these are all options, a list
        });
    }
});

$('.calendar').trigger('change');

Когда я пытаюсь достичь "конечной точки",

Этовозвращается в консоль.

http://127.0.0.1:8000/api/times?date=2019-11-20 500 (внутренняя ошибка сервера)

Может кто-нибудь сказать мне, что я делаю неправильно? Любая помощь приветствуется. Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2019

Я использовал $db = DB::connection()->getPdo();

Весь мой код выглядит так:

if (isset($_GET['date']) === true && empty($_GET['date']) === false) {
            $date = $_GET['date'];
            $db = DB::connection()->getPdo();
            $query = "select * from appointments where Day = :date";
            $statement = $db->prepare($query);
            $statement->bindValue(':date', $date);
            $statement->execute();
            $result = $statement->fetch();
            $statement->closeCursor();
            $eight_to_nine = $result['8AM_9AM'];
            $nine_to_ten = $result['9AM_10AM'];
            $ten_to_eleven = $result['10AM_11AM'];
            $eleven_to_twelve = $result['11AM_12PM'];
            $twelve_to_one = $result['12PM_1PM'];
            $one_to_two = $result['1PM_2PM'];
            $two_to_three = $result['2PM_3PM'];
            $three_to_four = $result['3PM_4PM'];
            $four_to_five = $result['4PM_5PM'];
            $five_to_six = $result['5PM_6PM'];
            $six_to_seven = $result['6PM_7PM'];
            if($eight_to_nine != 1){
                echo "<option value='8AM_9AM'>8:00AM - 9:00AM</option>";
            }
            if($nine_to_ten != 1){
                echo "<option value='9AM_10AM'>9:00AM - 10:00AM</option>";
            }
            if($ten_to_eleven != 1){
                echo "<option value='10AM_11AM'>10:00AM - 11:00AM</option>";
            }
            if($eleven_to_twelve != 1){
                echo "<option value='11AM_12PM'>11:00AM - 12:00PM</option>";
            }
            if($twelve_to_one != 1){
                echo "<option value='12PM_1PM'>12:00PM - 1:00PM</option>";
            }
            if($one_to_two != 1){
                echo "<option value='1PM_2PM'>1:00PM - 2:00PM</option>";
            }
            if($two_to_three != 1){
                echo "<option value='2PM_3PM'>2:00PM - 3:00PM</option>";
            }       
            if($three_to_four != 1){
                echo "<option value='3PM_4PM'>3:00PM - 4:00PM</option>";
            } 
            if($four_to_five != 1){
                echo "<option value='4PM_5PM'>4:00PM - 5:00PM</option>";
            }
            if($five_to_six != 1){
                echo "<option value='5PM_6PM'>5:00PM - 6:00PM</option>";
            }
            if($six_to_seven != 1){
                echo "<option value='6PM_7PM'>6:00PM - 7:00PM</option>";
            }
        }

Я бы предпочел, чтобы Eloquent (и современный?) Сделал это вместо этого, если кто-то может указатья в правильном направлении. Я просто хочу быть в курсе лучших практик.

0 голосов
/ 02 ноября 2019

вы не передали токен csrf в ajax-запросе

пропустите токен как этот в запросе

$.get('/api/times', {
            data:{'date':date,"_token": "{{ csrf_token() }}" },
        }, function (data) {
            //we send a get by $_GET['date'] with value of date
            var data = data.toString();
            $('#date_data').html(data);
            //these are all options, a list
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...