Javascript Google图表-hAxis上的数字/字符串问题(Jquery ajax JSON数据) 我想做什么

Javascript Google图表-hAxis上的数字/字符串问题(Jquery ajax JSON数据) 我想做什么,javascript,jquery,json,ajax,google-visualization,Javascript,Jquery,Json,Ajax,Google Visualization,我试图用谷歌图表在“组合图”中显示MySQL数据库中的数据。为了做到这一点,我遵循了教程,做了一些修改,并提出了代码,如本文底部所示 实际行为 数据显示正确。不过,我必须告诉谷歌图表,“年”是一个数字,它使它进入连续的“模式”。这导致哈克斯上的年份以小数位显示,特别是如果我没有所有连续年份的数据。(即2010.5) 期望行为 我希望谷歌图表能够像显示字符串一样显示年份,并以离散的“模式”运行 我认为问题在于 我认为我遇到的问题主要是因为年份(将在hAxis上显示)是数据库中的int(11),并且

我试图用谷歌图表在“组合图”中显示MySQL数据库中的数据。为了做到这一点,我遵循了教程,做了一些修改,并提出了代码,如本文底部所示

实际行为 数据显示正确。不过,我必须告诉谷歌图表,“年”是一个数字,它使它进入连续的“模式”。这导致哈克斯上的年份以小数位显示,特别是如果我没有所有连续年份的数据。(即2010.5)

期望行为 我希望谷歌图表能够像显示字符串一样显示年份,并以离散的“模式”运行

我认为问题在于 我认为我遇到的问题主要是因为年份(将在hAxis上显示)是数据库中的int(11),并且控制器提供的json也将年份作为数字。下面是一个json的示例:

[
    {
        "year_data": 2010,
        "data_1": 125895,
        "data_2": 25158.5
    }
]
由于我使用控制器处理其他一些事情,我最好不要对它做任何修改

我试图修复的是什么
  • 我尝试了大胆的改变
    data.addColumn('number','year_data')
    to
    data.addColumn('string','year_data')。它不起作用,我得到了一个“类型不匹配”
  • 我试图想出一个主要涉及hAxis.showTextEvery:和某种行计数的解决方法。这不起作用,但很可能是因为我缺乏经验/知识
用一句话回答这个问题 如何在JavaScript中将年份数据转换为字符串,或者让Google图表表现得像字符串一样

代码

功能图(数据、图表类型){
var jsonData=数据;
加载(“可视化”,“1”{
软件包:[“corechart”],
回调:drawVisualization
});
函数drawVisualization(){
var data=new google.visualization.DataTable();
data.addColumn(“数字”、“年份数据”);
data.addColumn('number','data 1');
data.addColumn('number','data 2');
$.each(jsonData,function(i,jsonData){
var year=jsonData.year\u数据;
var data1=jsonData.data_1;
var data2=jsonData.data_2;
data.addRows([
[年份,数据1,数据2]
]);
});
变量选项={
颜色轴:{
颜色:['#54C492','#cc0000']
},
datalessRegionColor:“#dedede”,
defaultColor:“#dedede”,
图例:{
位置:'底部',
对齐:“开始”
},
序列类型:“条”,
系列:{
1: {
类型:“行”
}
}
};
var chart=new google.visualization.ComboChart(document.getElementById('chart_div'));
图表绘制(数据、选项);
}
}
$(文档).ready(函数(){
url='/data/get';
ajax_数据('GET',url,函数(数据){
图表(数据)
});
});

toString
应该可以正常工作,请参阅以下代码片段

var data = new google.visualization.DataTable();
data.addColumn('string', 'year_data');
data.addColumn('number', 'Data 1');
data.addColumn('number', 'Data 2');
$.each(jsonData, function(i, jsonData) {
    var year = jsonData.year_data.toString();
    var data1 = jsonData.data_1;
    var data2 = jsonData.data_2;
    data.addRows([
        [year, data1, data2]
    ]);
});
var data = new google.visualization.DataTable();
data.addColumn('string', 'year_data');
data.addColumn('number', 'Data 1');
data.addColumn('number', 'Data 2');
$.each(jsonData, function(i, jsonData) {
    var year = jsonData.year_data.toString();
    var data1 = jsonData.data_1;
    var data2 = jsonData.data_2;
    data.addRows([
        [year, data1, data2]
    ]);
});