我在尝试将JSON数组从我的控制器传递到视图时遇到问题,以便能够使用图表js生成图表。 我尝试从控制器回显JSON并获得必要的值。
在我的PHP文件中,有一个ajax调用,它使用控制器中的函数来获取数据。
$.ajax({
url: "index.php/Sales/topClients",
method: "GET",
success: function(data){
var parsedData = JSON.parse(data);
console.log(parsedData[0].Name);
var clientname = [];
var orqty = [];
for(var i in parsedData){
clientname.push(parsedData[i].Name);
orqty.push(parsedData[i].Quantity);
}
var chartdata= {
labels: clientname,
datasets:[
{
label: 'Ordered Quantity',
backgroundColor: [
'rgba(231, 76, 60,0.7)',
'rgba(52, 152, 219,0.7)',
'rgba(46, 204, 113,0.7)',
'rgba(230, 126, 34,0.7)',
'rgba(155, 89, 182,0.7)',
],
borderColor: [
'rgba(231, 76, 60,1.0)',
'rgba(52, 152, 219,1.0)',
'rgba(46, 204, 113,1.0)',
'rgba(230, 126, 34,1.0)',
'rgba(155, 89, 182,1.0)',
],
borderWidth: 1,
data: orqty
}
]
};
Chart.defaults.scale.ticks.beginAtZero=true;
Chart.defaults.global.title.display= true;
var ctx= $("#RMCanvas");
var barGraph= new Chart(ctx,{
type: 'bar',
data: chartdata
});
},
error: function(data){
console.log(data);
}
});
这是控制器(库存)
public function topGoods(){
$top5fgsold= $this -> Inventory_Model -> getTopGoods();
echo json_encode($top5fgsold);
//$this->load->view("SA_Home-Latest");
}
这是模型:Inventory_Model
<?php date_default_timezone_set('Asia/Manila');
class Sales_Model extends CI_Model {
public function __construct() {
$this->load->database();
}
public function getTopClients(){
$this->db-> select("clients.ClientName, SUM(salesinvoicedetails.orderedQuantity) as q");
$this->db -> from("salesinvoicedetails");
$this->db -> join ("salesinvoice", "salesinvoicedetails.InvoiceNo = salesinvoice.InvoiceNo");
$this->db -> join("clients", "clients.ClientNo = salesinvoice.ClientNo");
$this->db -> where("salesinvoice.Status", 2);
$this->db -> where("OrderDate >=", " DATE_ADD(NOW(), INTERVAL -30 DAY)");
$this->db -> where("OrderDate <= NOW()");
$this->db ->group_by("1");
$this->db ->order_by("q", "desc");
$this->db ->limit(5);
$topclientresult= $this-> db -> get();
return $topclientresult-> result_array();
}
}
&GT;
答案 0 :(得分:1)
你应该在你的ajax方法中使用dataType:“json”。
例如:
$.ajax({
url: url
type: 'GET',
dataType: 'json',
success: function() {
//your code
},
error: function() {
//your code
}
});
答案 1 :(得分:0)
首先,您需要检查您的服务是否正常工作,我可以看到您使用GET方法,因此如果您将链接放在浏览器中,您将看到一个JSON数组,如果您看不到任何内容问题出在你的后端,那么你需要检查你的PHP代码。
其次,如果您在浏览器中收到JSON,那么您可以使用AJAX发出请求,
您可以在控制台中看到结果打印数据结果:
success: function(data){
console.log(data);
要查看使用F12
启用控制台所需的结果,您需要为页面充电并验证是否显示JSON。
答案 2 :(得分:0)
我认为你必须设置响应类型 - json才能获得json响应。 添加行 dataType:“json”
url: "index.php/Sales/topClients",
method: "GET",
dataType:"json"