首页 文章

传递JSON数组以通过AJAX查看CodeIgniter

提问于
浏览
0

我试图将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();
    }
}

?>

3 回答

  • 1

    您应该在ajax方法中使用dataType:“json” .

    例如:

    $.ajax({
                    url: url
                    type: 'GET', 
                    dataType: 'json', 
    
                    success: function() {
    
                        //your code
                    },
                    error: function() {
                        //your code
                    }
                });
    
  • 0

    首先,您需要检查您的服务是否正常工作,我可以看到您使用GET方法,因此如果您将链接放在浏览器中,您将看到一个JSON数组,如果您看不到任何问题在您的后端,然后你需要检查你的PHP代码 .

    其次,如果您在浏览器中收到JSON,那么您可以使用AJAX发出请求,

    你可以在控制台中看到结果打印数据结果:

    success: function(data){
         console.log(data);
    

    要查看使用 F12 启用控制台所需的结果,然后为页面充电并验证是否显示JSON .

  • 0

    我认为你必须设置响应类型 - json以获得json响应 . 添加行 dataType:"json"

    url: "index.php/Sales/topClients",
    method: "GET",
    dataType:"json"
    

相关问题