Строковые данные PHP, переданные в Chart.js, плохо отображаются

Пробую работать с 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. Это портит мне пирог ...

Почему это происходит и как мне избавиться от цитат? Есть ли лучший способ добиться этого? Спасибо.

Из памяти (давно не делал charts.js) вы должны уметь: data: <? Php echo json_encode ($ percent_count_string); ?>,

Second2None 15.12.2018 07:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
38
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В 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(',');

Это должно передать его как массив данных. Вы можете сделать все остальное вот так

Попробую это сейчас

Valkay 15.12.2018 08:15

Вы должны изменить это:

<?php echo $percentage_count_string; ?>

к:

<?php echo json_encode($percentage_count_string); ?>

Это может решить вашу проблему

Ваше здоровье

ничего не вернул

Valkay 15.12.2018 07:57

Другие вопросы по теме