Ну, вы на правильном пути. Измените свою функцию успеха на ниже, объявите pieData
глобально. В вашей функции успеха вы присваиваете ответ массиву pieData
. Ваша функция возвращает только одно число - так что вы можете просто назначить его сразу.
//declare globally
var pieData;
// change success function to this
success: function(response) {
pieData = [
{
value: response, //response is from ajax request
color: "#337AB7" //hardcoded color
},
{ //hardcoded object
value: 50,
color: "#FC8213"
}
];
//instantiate chart
new Chart(document.getElementById("pie").getcontext("2d").Pie(pideData));
}
НО в случае, если он возвращает массив в формате JSON, вы можете выполнить итерацию следующим образом:
Json (пример):
[
{
value: 'some random value1',
color: "#353AB7"
},
{
value: 'some random value2',
color: "#237AB7"
},
{
value: 'some random value3',
color: "#F37AB7"
},
{
value: 'some random value14,
color: "#137AB7"
}
]
Js:
// declare global array
var pieData = [];
// change success function to this
success: function(response) {
response.forEach(function(el) {
pieData.push({value: el.value, color: el.color})
});
new Chart(document.getElementById("pie").getcontext("2d").Pie(pideData));
}