Javascript 如何在要拉取的系列数据中包含字符串以进行工具提示点格式设置?
这里是初学者,我正在尝试构建一个柱形图,在x轴上显示用户名,在y轴上显示测试分数。在工具提示框中,我试图使它显示考试分数和考试日期。我使用PHP填充基于oracle sql数据库的图形,因此我将PHP混合到Highcharts的javascript中 我不确定我想做的是否真的可行,但我试图从sql数据库中获取测试日期,并将其插入到序列数据中,这样当你将鼠标悬停在列上时,我可以将其调出到工具提示框中,它会告诉你用户、分数和他们参加考试的日期 这是我正在尝试的,但它不起作用,因为我猜测序列数据中有一些字符串而不是数字。你能提供的任何帮助都会很棒!谢谢Javascript 如何在要拉取的系列数据中包含字符串以进行工具提示点格式设置?,javascript,php,highcharts,Javascript,Php,Highcharts,这里是初学者,我正在尝试构建一个柱形图,在x轴上显示用户名,在y轴上显示测试分数。在工具提示框中,我试图使它显示考试分数和考试日期。我使用PHP填充基于oracle sql数据库的图形,因此我将PHP混合到Highcharts的javascript中 我不确定我想做的是否真的可行,但我试图从sql数据库中获取测试日期,并将其插入到序列数据中,这样当你将鼠标悬停在列上时,我可以将其调出到工具提示框中,它会告诉你用户、分数和他们参加考试的日期 这是我正在尝试的,但它不起作用,因为我猜测序列数据中有一
你想做的事肯定是可能的。下面是一个这样工作的例子: 然而,在本例中,我取出PHP并用一些硬编码数据替换它
data: [{y:7, color: '#00A6CF', testdate: '2014-12-12'},{y:2, color:"#FF0000", testdate: '2015-01-03'}, {y:3,color:"#00FF00", testdate:'2014-10-19'}]
所以我认为问题在于,你把PHP和javascript混合在一起,得到了一些奇怪的结果。如果没有其他原因导致读取和调试非常非常困难,那么像您这样将内联PHP包含到javascript代码中通常是一个非常糟糕的主意
我突然想到几件事:
您根本不应该为此使用PHP,但如果必须这样做,则不应该像现在这样使用DoWhile循环。您将do/while与incrementor一起使用,而不是for循环:
$i = 0;
do {
echo "'";
echo $userinfos[$i]['username'];
echo "',";
$i++;
} while ($i<=$count);
这将为您提供一个JSON对象,您可以非常轻松地阅读和使用它。与此类似的一些未经测试的东西,如果不稍加修改,可能无法工作:
$.getJSON('/generate.php', function(data) {
$('#graph1').highcharts({
credits: { enabled:false},
chart: {
type: 'column'
},
title: {
text: 'Most Recent Test Scores'
},
subtitle: {
text: 'Drag slider to change the chart width'
},
xAxis: {
categories: data.categories
yAxis: {
plotLines: [{
color: 'red',
dashStyle: 'shortdash',
value: 85,
width: 1,
}],
floor: 0,
ceiling: 100,
title: {
text: 'Test Score (%)'
}
},
series: [{
showInLegend: false,
name: 'Test Score',
data: data.seriesdata,
tooltip: {
shared: true,
useHTML: true,
pointFormat: '<tr><td style="color: {series.color}">Score: </td>' +
'<td style="text-align: right">{point.y} %</td></tr><tr><br><td>Date: </td>' +
'<td style="text-align: right">{point.testdate}</td></tr>'
}
});
});
谢谢,我的问题不是用引号括住字符串!
$output = array();
foreach ($userinfos as $user) {
$output['categories'][] = $user['username'];
if ($user['score'] >= 85) {
$color = "#00A6CF";
} else {
$color = "#FF0000";
}
$user['color'] = $color;
$output['seriesdata'][] = $user;
}
echo json_encode($output);
$.getJSON('/generate.php', function(data) {
$('#graph1').highcharts({
credits: { enabled:false},
chart: {
type: 'column'
},
title: {
text: 'Most Recent Test Scores'
},
subtitle: {
text: 'Drag slider to change the chart width'
},
xAxis: {
categories: data.categories
yAxis: {
plotLines: [{
color: 'red',
dashStyle: 'shortdash',
value: 85,
width: 1,
}],
floor: 0,
ceiling: 100,
title: {
text: 'Test Score (%)'
}
},
series: [{
showInLegend: false,
name: 'Test Score',
data: data.seriesdata,
tooltip: {
shared: true,
useHTML: true,
pointFormat: '<tr><td style="color: {series.color}">Score: </td>' +
'<td style="text-align: right">{point.y} %</td></tr><tr><br><td>Date: </td>' +
'<td style="text-align: right">{point.testdate}</td></tr>'
}
});
});