Я обнаружил странное поведение сайта, который я разрабатываю.Он разрабатывается с использованием Laravel 5.8 и использует предустановку React для построения всего внешнего интерфейса.В этом проекте есть раздел статистики, и в некоторых из них вам нужно показать поле total
.Когда я использую php artisan serve
для запуска своего проекта и доступа к статистике, результаты отображаются и рассчитываются правильно.Проблема возникает, когда я развертываю этот сайт на Apache, используя AMPPS.Когда я делаю это, общая сумма вычисляется как строка, поэтому, например, если у меня есть сумма 1+0
, вместо того, чтобы получить 1, я получаю 10
.Он объединяет целые числа как строки.
Это результат, когда я использую php artisan serve
php artisan serve">
И этот, когда я использую apache:
Это мой код клиента:
constructor(props) {
super(props);
this.statsRoute = 'attendants/classification';
this.state = {
barData: {
labels: [],
datasets: [
{
backgroundColor: [],
borderWidth: 1,
hoverBackgroundColor: [],
data: []
}
],
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
},
legend: {
display: false,
}
},
tableRepresentation: {
header: ['Clasificación', 'Número de Asistentes'],
rows: []
}
},
// Pie chart data
pieData: {
labels: [],
datasets: [
{
backgroundColor: [],
borderWidth: 1,
hoverBackgroundColor: [],
data: [],
total: 0
}
],
options: {
legend: {
display: true,
position: 'bottom',
},
tooltips: {
callbacks: {
label: function (tooltipItem, data) {
let dataset = data.datasets[tooltipItem.datasetIndex];
let currentValue = dataset.data[tooltipItem.index].toFixed(2);
let label = data.labels[tooltipItem.index];
return ` ${label}: ${currentValue}%`;
}
}
}
},
tableRepresentation: {
header: ['Clasificación', 'Porcentaje'],
rows: []
}
}
}
}
componentWillMount() {
this.props.statService.getStats(this.statsRoute)
.then(res => {
let total = 0;
let barData = this.state.barData;
let pieData = this.state.pieData;
let colors = this.props.randomColorService.getArrayOfColors(res.length);
for ( let i = 0; i < res.length; i++ ) {
let item = res[i];
total += item.count;
barData.tableRepresentation.rows.push([
item.classification,
item.count
]);
barData.labels.push(item.classification);
barData.datasets[0].data.push(item.count);
pieData.datasets[0].data.push(item.count * 100);
}
// Assign labels and colors to pie chart
pieData.labels = barData.labels;
barData.datasets[0].backgroundColor = colors['withAlfa'];
barData.datasets[0].hoverBackgroundColor = colors['withoutAlfa'];
// Assign colors to bar chart
pieData.datasets[0].backgroundColor = colors['withAlfa'];
pieData.datasets[0].hoverBackgroundColor = colors['withoutAlfa'];
for ( let i = 0; i < pieData.datasets[0].data.length; i++ ) {
pieData.datasets[0].data[i] /= total;
let value = pieData.datasets[0].data[i];
pieData.tableRepresentation.rows.push([
pieData.labels[i],
`${value.toFixed(2)}%`
]);
}
barData.tableRepresentation.rows.push([
"",
`Total: ${total}`
]);
this.setState({
barData: barData,
pieData: pieData
});
})
.catch(err => {
console.log(err);
});
}
И я сомневаюсь, что это проблема бэкэнда, потому что когда я делаю запрос, я получаюJSON вот так:
{
"data": [
{
"item": "Invitado",
"count": 6
},
{
"item": "Asistente",
"count": 7
}
]
}
Итак, бэкэнд не составляет общую сумму, я делаю это на клиенте.
Почему это происходит только тогда, когда я использую apache в качестве сервера?