gpt4 book ai didi

php - 如何从 parseJSON 数组中获取每个数据

转载 作者:行者123 更新时间:2023-11-29 18:49:28 26 4
gpt4 key购买 nike

我正在尝试使用 Google 图表 API 绘制折线图,​​并使用 PHP codeignitor 从 mySQL 数据库检索数据。

到目前为止,我能够检索数据,但我无法解析 Json 数据并将它们填充到折线图中。下面是我实际加载的 View 。

<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript">
var BASE_URL = "<?php echo base_url(); ?>";
</script>
<script type="text/javascript">
// Load the Visualization API and the line package.
google.charts.load('current', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);

function drawChart() {

$.ajax({

type: 'POST',
url: BASE_URL+'index.php/Chart_varnish/getdata',
dataType: "json",



success: function (data1) {
// Create our data table out of JSON data loaded from server.
var data = new google.visualization.DataTable();
data.addColumn('string', 'timeline');
data.addColumn('string', 'solid');
var jsonData = $.parseJSON(data1);

for (var i = 0; i < jsonData.length; i++) {
data.addRows([jsonData[i].timeline, jsonData[i].solid_t1]);
}
var options = {

title: 'Solid chart',
width: 900,
height: 500,

};

var chart = new google.visualization.LineChart(document.getElementById('line_chart'));
chart.draw(data, options);
}
});
}
</script>
</head>
<body>

<div id="line_chart"></div>
</body>
</html>

下面是我的 Controller 中的 getdata 函数:

    function getdata(){
$this->load->model('Chart');
$this->load->helper('url');
$data = $this->Chart->getdata_solid();
print_r(json_encode($data, true));
}

我尝试输出json_encode数据,得到以下结果:

[{"timeline":"430","solid_t1":"12"},{"timeline":"030","solid_t1":"8.1"},{"timeline":"830","solid_t1":"32"},{"timeline":"1230","solid_t1":"10"},{"timeline":"1630","solid_t1":"100"},{"timeline":"2030","solid_t1":"8"}]

有人可以帮我解决这个问题吗,谢谢。

更新

大家好,我将函数放在我的模型中,也许是因为我的查询结果是数组,而不是对象?

function getdata_solid(){
$this->db->select('timeline');
$this->db->select('solid_t1');
$this->db->from("varnish_mvs");
$this->db->where('date_selected', '2017-03-25');
//$this->db->where('timeline', $timeline);
$query = $this->db->get();
return $query->result_array();

}

最终更新:我终于通过改变加载谷歌图表函数的方式解决了这个问题。下面是我的最终工作代码。希望对遇到同样问题的人有所帮助。

$(document).ready(function() {

$.ajax({

type: 'POST',
//url: 'http://localhost/charts/charts/getdata',
url: BASE_URL+'index.php/Chart_varnish/getdata',
dataType: "JSON",
success: function (data1) {

// alert(data1);
// Load the Visualization API and the line package.
google.charts.load('current', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(function(){
drawChart(data1);
});

}
});

function drawChart(data1) {

var data = new google.visualization.DataTable();
data.addColumn('string', 'timeline');
data.addColumn('number', 'solid_t1');
var dataArray = [];
/*$.each(data1, function(i, obj){
dataArray.push([obj.timeline, parseInt(obj.solid_t1)]);
});*/
var jsonData = $.parseJSON(data1);
for (var i = 0; i < jsonData.length; i++) {
dataArray.push([jsonData[i].timeline, parseInt(jsonData[i].solid_t1)]);
}
//dataArray.push([jsonData[0].timeline, parseInt(jsonData[0].solid_t1)], [jsonData[1].timeline, parseInt(jsonData[1].solid_t1)])
//dataArray.push(['2', 3], ['6', 5]);
alert(dataArray);
data.addRows(dataArray);
var options = {
title:'Solid chart',
width: 900,
height: 500,
};
var chart = new google.visualization.LineChart(document.getElementById('line_chart'));
chart.draw(data, options);
}

});

最佳答案

这个

dataType: "json",

确保您期望 json 作为响应( documentation here ),因此您不需要执行

var jsonData = $.parseJSON(data1);

data1 已经是一个 JavaScript 对象

关于php - 如何从 parseJSON 数组中获取每个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44431204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com