【问题标题】:fetch json data from api using datatables serverside processing with codeigniter使用带有 codeigniter 的数据表服务器端处理从 api 获取 json 数据
【发布时间】:2018-04-15 18:02:50
【问题描述】:

所以我正在做仪表板项目,并使用 dataTables 获取供应商表,并从 API 获取数据到表,API 将提供 json 数据,但我有点困惑,因为这是我第一次用 api 数据填充表,通常我从本地数据库中获取数据,并且因为 sql fetching 有很多参考

这是示例 API Json 数据:

{"produkList":[{"product_code":"XXXXX","ticket":"UD","numbers":"1200","price": 20,"verification":true},{"produk_code":"XXXXXX","ticket":"UD","numbers":"4000","price":120,"verification":false}]}

数据表js(视图):

table = $('#table').DataTable({ 

        "processing": true, //Feature control the processing indicator.
        "serverSide": true, //Feature control DataTables' server-side processing mode.
        "order": [], //Initial no order.

        // Load data for the table's content from an Ajax source
        "ajax": {
            "url": "<?php echo site_url('dashboard/ajax_list')?>",
            "type": "POST"
        },

        //Set column definition initialisation properties.
        "columnDefs": [
        { 
            "targets": [ -1 ], //last column
            "orderable": false, //set not orderable
        },
        ],

    });

和控制器(Dashboard.php)

public function ajax_list()
{

  $curl = curl_init("http://example.com/dashboard/APIget.php");      
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");     
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  
    curl_setopt($curl, CURLOPT_POSTFIELDS); 
    $result = curl_exec($curl);    
    curl_close($curl);     
    echo json_encode($result); 
}

对于模型,我仍然没有概念,因为我只知道从本地数据库中获取,而且我知道我可以从 API 获取数据而无需服务器端处理,但结果是数据越大, 网站加载时间会很长,所以有人知道怎么做吗?

【问题讨论】:

  • 当您从 API 获取 JSON 格式的数据时,我认为您应该解码。试试这个var_dump(json_decode($result, true));php.net/manual/en/function.json-decode.php
  • 感谢@SureshPokharel 的快速响应,但是数据表的其他功能,如搜索、分页等,会自动加载吗?
  • 数据量大,时间长。要首先获取小数据并稍后加载它们,您必须在 API 中进行更改。如果您使用第三方的 API,则必须对此进行一些规定。也许您需要查看他们的文档。
  • 问题来了,我拿到的API不在我的范围内,是其他厂商的API,有没有其他办法?

标签: php json codeigniter datatable


【解决方案1】:

示例: https://datatables.net/examples/data_sources/server_side.html

$(document).ready(function() {
    $('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "../server_side/scripts/server_processing.php"
    } );
} );

【讨论】:

  • 感谢 San K 的回复,我已经知道客户端,问题出在服务器端
  • @Prem 如果您查看上面的链接 San 有一个示例服务器端脚本,它是用 PHP 编写的。如果您不确定数据表正在向服务器发送哪些数据,请使用浏览器检查器进行检查。然后您可以测试更改页面、搜索等以查看更改的值。
  • 谢谢mic,是的,我明白你的意思,但是如果数据来自sql,我们通常可以编辑服务器端的表,这样过滤、搜索、分页等就可以在服务器端代码中完成,但是如果来源来自API,而我没有它的权限呢?因为问题是,如果我在没有服务器端处理的情况下这样做,我的仪表板的性能会变慢,我自己尝试过,从 API 来看,数据太大了,网络需要很长时间才能完全加载
猜你喜欢
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2014-10-06
  • 2018-08-23
  • 1970-01-01
相关资源
最近更新 更多