【发布时间】:2018-05-07 21:49:36
【问题描述】:
上下文
我正在构建一个 WordPress 主题模板,并尝试使用 PHP 和核心 WordPress 函数将一组数据从高级自定义字段 > 转发器字段传递到 JavaScript/HTML5 饼图。
问题
我不知道如何以 JS 理解的格式将 PHP 数据传递给 JS。
问题
我不确定自己是否正确地提出问题或正确地思考问题。例如,我相信我可以使用 JS 直接与数据库进行通信。但这是我认为的问题:
- 如何在循环外将 PHP 数组传递到 JS 中可读的格式?
- 关于该主题的培训材料或课程有哪些链接?
代码
这是我的代码:
<?php
if( have_rows('tpc_psmr_referrer') ):
while ( have_rows('tpc_psmr_referrer') ) : the_row();
$tpc_psmr_referrer_type = get_sub_field('tpc_psmr_referrer_type');
$tpc_psmr_referrer_platform = get_sub_field('tpc_psmr_referrer_type_platform'); // This needs to get passed as an array to the JS below.
endwhile;
endif;
?>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data1 = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2], // This is where the PHP array needs to be output.
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
var options = {
title: 'Revenue'
};
var chart1 = new google.visualization.PieChart(document.getElementById('piechart1'));
chart1.draw(data1, options);
var data2 = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 11],
['Eat', 2],
['Commute', 2],
['Watch TV', 2],
['Sleep', 7]
]);
var options = {
title: 'Budget'
};
var chart2 = new google.visualization.PieChart(document.getElementById('piechart2'));
chart2.draw(data2, options);
}
</script>
【问题讨论】:
-
你打算从 javascript 向你的 php 发出 ajax 请求吗?
-
使用数据属性并将 PHP 变量输出给它(并对其进行 json_encode - php.net/manual/en/function.json-encode.php)。然后您可以从 JS 中检索。 developer.mozilla.org/en-US/docs/Learn/HTML/Howto/…
-
@BenDubuisson 这是一种方法,但我认为宁愿将 JSON 放在一个不可见的元素中以避免任何 XSS 的机会(owasp.org/index.php/…)
-
@JakubJudas 一个不可见的元素不会阻止 XSS
标签: javascript php wordpress advanced-custom-fields