Ajax 在 Laravel 路由中调用 returns 包含 ChartJS 标签日期的 json 编码数组

Ajax call at Laravel route that returns an json encoded array containing dates for ChartJS labels

我有一个 Laravel 5.7 项目,有 ajax 和 ChartJS。

在页面加载时,我正在 ajax 调用“action_route”,returns 我的 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' - Because I need dates if this format: '01/18', '02/18' etc.

在模板中:

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

问题 这就是 get 放入 html.

中的内容

当使用{{ }}时,laravel将转义它显示的数据。要阻止它转义数据,您应该将其包装在 {!! !!} 中,即

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

有关详细信息,您可以查看 Docs