我已设法通过输出以下字符串从数据库输出结果:
[['Grupo de edad','Mujeres','Hombres'],['Menos de 40',2,0],['De 40 a 49',7,3],['De 50 a 59',8,5],['De 60 a 69',20,25],['De 70 y más',6,10]]
如果我将此文本完全粘贴到以下内容中:
var data = google.visualization.arrayToDataTable([['Grupo de edad','Mujeres','Hombres'],['Menos de 40',2,0],['De 40 a 49',7,3],['De 50 a 59',8,5],['De 60 a 69',20,25],['De 70 y más',6,10]]);
我可以正确地想象图表。
但是,如果我通过使用jQuery .get()函数获取数据,然后我将数据传递给谷歌可视化功能,如下所示:
google.load("visualization", "1.1", {packages:["corechart","bar"]});
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
$.get("{{URL::action('ChartController@investigadoresEdadSexo')}}", function(datos, status){
var data = google.visualization.arrayToDataTable(datos);
var options = {
//many options ...
};
var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(data, options);
});//End of jQuery .get
}
我得到了
不是数组错误
我知道我正在传递一个字符串,但是如果我通过键入(复制和粘贴)google.visualization.arrayToDataTable()函数来测试该字符串,为什么它不起作用?或者我如何使该函数将该字符串解释为数组?
我该如何解决这个问题?
答案 0 :(得分:2)
尝试使用datos
将JSON.parse
转换为数组:
var data = google.visualization.arrayToDataTable(JSON.parse(datos));
更新
在解析datos
之前,引号'
应转换为"
:
datos = datos.replace(/'/g, '"');
var data = google.visualization.arrayToDataTable(JSON.parse(datos));
答案 1 :(得分:0)
当您将第一个文本粘贴到未粘贴文本的函数中时,您将创建一个arrayToDataTable
函数使用的数组元素。
正如@phts指出的那样,你必须解析你的字符串以从中创建一个Array元素。将dataType
参数设置为" json"并且它将获得一个JSON对象作为结果。
答案 2 :(得分:0)
非常感谢你这么多!在使用jsp ...
生成arraylist时,我在代码之前得到了非常奇怪的行如果任何人的jsp代码出现问题,我就是这样做的。
Connection con = (Connection) session.getAttribute("conexao");
Locale.setDefault(Locale.GERMAN);
if (con == null) {
response.sendRedirect("fimsessao.html");
return;
}
request.setCharacterEncoding("UTF-8");
Statement st;
ResultSet rs;
String cod = String.valueOf(session.getAttribute("cod"));
//Variáveis de Insert e Update
SimpleDateFormat dt = new SimpleDateFormat("yyyy/MM");
String dates = null;
double peso = 0;
ArrayList relPeso = new ArrayList();
relPeso.add("['Datas'");
relPeso.add("'Peso']");
try {
String query = "SELECT `data`, `peso` FROM asaacademia.tblavaliacaofis WHERE idUsuario = '" + cod + "';";
PreparedStatement pstm = con.prepareStatement(query);
rs = pstm.executeQuery();
while (rs.next()) {
dates = dt.format(rs.getTimestamp(1));
peso = rs.getDouble(2);
relPeso.add("['" + dates + "'");
relPeso.add(String.valueOf(peso) + "]");
}
out.print(relPeso);
System.out.print(relPeso);
} catch (Exception e) {
e.printStackTrace();
}
也使用它来代替jQuery.parseJSON(queryObject):
从jQuery 3.0开始,不推荐使用$ .parseJSON。要解析JSON对象,请改用原生JSON.parse方法。
来源:http://api.jquery.com/jquery.parsejson/
这是我的HTML代码:
<div class="well">
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
//Puxar os dados do relatório de peso.
var queryObject = "";
$.ajax({
url: 'peso.jsp',
success: function (data) {
queryObject = data;
//alert(data);
},
error: function (xhr, type) {
alert('server error occoured')
}
});
function drawChart() {
// Create and populate the data table. [['Datas', 'Peso'], ['2016/05', 95.0], ['2016/05', 93.0], ['2016/05', 92.0]]
//var data = google.visualization.arrayToDataTable([['Datas', 'Peso'], ['2016/05', 95.0], ['2016/05', 93.0], ['2016/05', 92.0]]);
//jQuery.parseJSON()
queryObject = queryObject.trim();
queryObject = queryObject.replace(/'/g, '"');
queryObject = jQuery.parseJSON(queryObject);
var data = google.visualization.arrayToDataTable(queryObject);
var options = {
vAxis: { title: 'Peso em KG' }
};
// Create and draw the visualization.
new google.visualization.LineChart(
document.getElementById('divPeso')).draw(data, options);
}
</script>
<h3>Peso</h3>
<div id="divPeso"></div>
</div>