Ajax-вызов на маршруте Laravel, который возвращает кодированный в json массив, содержащий даты для меток ChartJS - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть проект Laravel 5.7 с ajax и ChartJS.

При загрузке страницы я выполняю ajax-вызов к " action_route ", который возвращает метки для моего ChartJS.Функция php использует json для кодирования массива меток, а ajax их декодирует.

function get_data($year) {
    $test = \DB::select( \DB::raw("
        SELECT 
            DATE_FORMAT(date_for,'%c/%y') AS 'month',
            col1,
            col2,
            col3
        FROM test
        WHERE
            AND YEAR(date_for) = '" . $year . "'
        GROUP BY month
        ORDER BY month ASC
    ") );

    return $test;
}

public function action_route() {
   $data = self::get_data(2018);
   foreach($data as $x) {
      $labels[] = $x->month;
   }
}

return view('/test/get_data', [
     'labels' => json_encode($labels)
]);

DATE_FORMAT (date_for, '% c /% y') AS 'month' - потому что мне нужны датыесли этот формат: '01 / 18 ', '02 / 18' и т. д.

В шаблоне:

var labels = JSON.parse('{{ $labels }}');

Проблема Вот что получитсяположить в html.

enter image description here

1 Ответ

0 голосов
/ 19 декабря 2018

При использовании {{ }} laravel будет экранировать отображаемые данные.Чтобы прекратить экранирование данных, вы должны вместо этого обернуть их в {!! !!}, т.е.

var labels = JSON.parse('{!! $labels !!}');

. Для получения дополнительной информации вы можете проверить Документы

...