Laravel 路由上的 Ajax 调用,返回一个包含 ChartJS 标签日期的 json 编码数组
Posted
技术标签:
【中文标题】Laravel 路由上的 Ajax 调用,返回一个包含 ChartJS 标签日期的 json 编码数组【英文标题】:Ajax call at Laravel route that returns an json encoded array containing dates for ChartJS labels 【发布时间】:2019-05-20 05:36:50 【问题描述】:我有一个 Laravel 5.7 项目,带有 ajax 和 ChartJS。
在页面加载时,我正在对“action_route”进行 ajax 调用,它会返回我的 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 ');
问题 这就是 get 放入 html 中的内容。
【问题讨论】:
【参考方案1】:当使用
时,laravel 会转义它显示的数据。要阻止它转义数据,您应该将其包装在 !! !!
中,即
var labels = JSON.parse('!! $labels !!');
欲了解更多信息,您可以查看Docs
【讨论】:
图表现在出现了,但还是不行,我得到的标签是:“1%2B18”、“10%2B18”。我认为这是某种 HTML 问题,它正在转换字符 它可以工作 - 抱歉之前的评论。我自己尝试了一些破坏它的东西。谢谢 @JohnDoe 没关系,我很高兴能帮上忙。只是出于好奇,您为什么使用原始查询而不是 Eloquent?您是否为test
表设置了 Eloquent 模型?
因为它是一个非常复杂的查询,使用 Eloquent 是不可能的,这只是一个简单的例子,实际的查询是巨大的。 (我有模型和控制器)
@JohnDoe Ah 很公平。以上是关于Laravel 路由上的 Ajax 调用,返回一个包含 ChartJS 标签日期的 json 编码数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称