Пробую работать с Chart.js впервые. Я уже понимаю, как это работает, но теперь я хочу передать свои данные с php на javascript.
Вот что у меня есть:
PHP
//send the string values to javascript
$grade_range_string = mb_substr($grade_range_string, 0, -2);
$percentage_count_string = implode(", ", $percentage_count_array);
//chart colors
$grade_chart_colors_string = "";
$grade_chart_colors_array = grade_chart_colors();
foreach ($grade_chart_colors_array as $color) {
$grade_chart_colors_string .= "'".$color."'" . ", ";
}
$grade_chart_colors_string = mb_substr($grade_chart_colors_string, 0, -2);
HTML
<span id = "grade_range_string" data-value = "<?php echo $grade_range_string; ?>"></span>
<span id = "percentage_count_string" data-value = "<?php echo $percentage_count_string; ?>"></span>
<span id = "grade_chart_colors_string" data-value = "<?php echo $grade_chart_colors_string; ?>"></span>
<canvas id = "broadsheet_piechart"></canvas>
Javascript:
// Pie chart
if ( $('#broadsheet_piechart').length ) {
var grade_range_string = $('#grade_range_string').attr('data-value');
var percentage_count_string = $('#percentage_count_string').attr('data-value');
var grade_chart_colors_string = $('#grade_chart_colors_string').attr('data-value');
//debug
console.info(grade_range_string);
console.info(percentage_count_string);
console.info(grade_chart_colors_string);
var ctx = document.getElementById("broadsheet_piechart");
var data = {
datasets: [{
data: [percentage_count_string],
backgroundColor: [grade_chart_colors_string],
label: 'My dataset' // for legend
}],
labels: [grade_range_string]
};
var broadsheet_piechart = new Chart(ctx, {
data: data,
type: 'pie',
options: {
animation: {
duration: 0
}
}
});
}
//debug
console.info(data);
В окне консоли 3 переменные grade_range_string, percentage_count_string, grade_chart_colors_string возвращают данные в том виде, в каком они отформатированы, но переменная данных наборов данных заключает данные в двойные кавычки, например:
data: ["'Item 1', 'Item 2', 'Item 3', 'Item etc'"]
То же самое для backgroundColor и labels.
Это портит мне пирог ...
Почему это происходит и как мне избавиться от цитат? Есть ли лучший способ добиться этого? Спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В php это можно сделать
//send the string values to javascript
$grade_range_string = mb_substr($grade_range_string, 0, -2);
$percentage_count_string = implode(", ", $percentage_count_array);
//chart colors
$grade_chart_colors_string = "";
$grade_chart_colors_array = grade_chart_colors();
// New Code
$grade_chart_colors_string = join(",", $grade_chard_colors_array); // will join all the colors with ','
//for eg. $grade_chart_colors_string = "red,blue,yellow"
$grade_chart_colors_string = mb_substr($grade_chart_colors_string, 0, -2);
В javascript верните строку в массив
var grade_chart_colors_string = $('#grade_chart_colors_string').attr('data-value');
var grade_chart_colors_array = grade_chart_colors_string.split(',');
Это должно передать его как массив данных. Вы можете сделать все остальное вот так
Попробую это сейчас
Вы должны изменить это:
<?php echo $percentage_count_string; ?>
к:
<?php echo json_encode($percentage_count_string); ?>
Это может решить вашу проблему
Ваше здоровье
ничего не вернул
Из памяти (давно не делал charts.js) вы должны уметь: data: <? Php echo json_encode ($ percent_count_string); ?>,