无法在jQuery内部显示量表

时间:2019-05-07 16:20:26

标签: jquery charts google-visualization

我无法使用我在jquery中获取的值来显示Google仪表图。如果我静态设置这些值,则会显示图表,否则它不会出现。 即使我可以成功打印变量,也会发生这种情况,所以这与变量设置不正确无关。

数据集包含在“#”之间,并以“;”分隔,例如:

value1; value2; value3; ....; value7

我尝试过静态设置变量,将它们分配给整数,然后显示图表。 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的数据一样。

1 个答案:

答案 0 :(得分:1)

最有可能将值存储为字符串而不是数字。
在这种情况下,将不会绘制图表,也不会记录任何错误。

使用parseIntparseFloat确保值是数字。

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>