我无法使用我在jquery中获取的值来显示Google仪表图。如果我静态设置这些值,则会显示图表,否则它不会出现。 即使我可以成功打印变量,也会发生这种情况,所以这与变量设置不正确无关。
数据集包含在“#”之间,并以“;”分隔,例如:
我尝试过静态设置变量,将它们分配给整数,然后显示图表。 console.log以两种方式打印值,这让我感到困惑。
$.get("index.php", function(response)
{
var a=response.split("#")[1].split(";")[1].split(".")[0];
var b=response.split("#")[1].split(";")[2].split(".")[0];
var c=response.split("#")[1].split(";")[7].split(".")[0];
/*
a=224;
b=661;
c=100;
*/
console.log(a + " " + b + " " + c);
data_gauge = google.visualization.arrayToDataTable([
['Label', 'Value'],
['a',a],
['b',b],
['c',c]
]);
var options_gauge = {
width: 400, height: 130,
redFrom: 1000, redTo: 5000,
yellowFrom:100, yellowTo: 1000,
minorTicks: 2,
max: 7000,
min: 0
};
try{
var chart_gauge = new google.visualization.Gauge(document.getElementById('div_gauge'));
chart_gauge.draw(data_gauge, options_gauge);
}
catch(e)
{console.log(e.message)}
},"text");
我认为问题可能与jquery调用有关,但是由于console.log显示3个变量具有各自的值,所以我不明白这是怎么回事。就像Google图表不接受来自GET的数据一样。
答案 0 :(得分:1)
最有可能将值存储为字符串而不是数字。
在这种情况下,将不会绘制图表,也不会记录任何错误。
使用parseInt
或parseFloat
确保值是数字。
var a=parseFloat(response.split("#")[1].split(";")[1].split(".")[0]);
请参阅以下工作示例...
1)用字符串绘制(什么也没有发生)
google.charts.load('current', {
packages:['gauge'],
}).then(function () {
var a='224';
var b='661';
var c='100';
console.log(a + " " + b + " " + c);
data_gauge = google.visualization.arrayToDataTable([
['Label', 'Value'],
['a',a],
['b',b],
['c',c]
]);
var options_gauge = {
width: 400, height: 130,
redFrom: 1000, redTo: 5000,
yellowFrom:100, yellowTo: 1000,
minorTicks: 2,
max: 7000,
min: 0
};
var chart_gauge = new google.visualization.Gauge(document.getElementById('div_gauge'));
chart_gauge.draw(data_gauge, options_gauge);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="div_gauge"></div>
2)用数字绘制(出现图表)
google.charts.load('current', {
packages:['gauge'],
}).then(function () {
var a=parseFloat('224');
var b=parseFloat('661');
var c=parseFloat('100');
console.log(a + " " + b + " " + c);
data_gauge = google.visualization.arrayToDataTable([
['Label', 'Value'],
['a',a],
['b',b],
['c',c]
]);
var options_gauge = {
width: 400, height: 130,
redFrom: 1000, redTo: 5000,
yellowFrom:100, yellowTo: 1000,
minorTicks: 2,
max: 7000,
min: 0
};
var chart_gauge = new google.visualization.Gauge(document.getElementById('div_gauge'));
chart_gauge.draw(data_gauge, options_gauge);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="div_gauge"></div>