【问题标题】:Datatable data from array?来自数组的数据表数据?
【发布时间】:2016-03-08 07:57:07
【问题描述】:

我现在有一个可以直接从我的表中获取数据的工作数据表。问题是,现在我想使用来自多个表的数据填充另一个数据表。我已经有一个有效的 sql 查询,它返回我想要的数据。我当时想做的是将我想要的列的每个数据放在不同的数组中,然后将它们放入数据表中。

$data = $this->log_send_model->getListDetailled($conditions,array('from'=>$this->uri->segment(4)),array('orderBy'=>array('id_log_send'=>'desc')));
$arrayMess = array();
   // Other array for columns

   foreach ($data as $value) {
      # code...
      array_push($arrayMess, $value->message);
      //var_dump($arrayMess);

}

在这里,我希望一列是所有 $value->message 数据。我正在考虑对每一列都这样做,然后将其放入数据表中。

这是数据表代码:

$(document).ready(function () {

$("#datatable").dataTable({
   processing: true,
    serverSide: true,
    ajax: {
        "url": "<?php echo base_url()."DatatableControl/dataTable"; ?>",
        "type": "POST"
    },
    columns: [
     { data: "id_log_send" },
     { data: "date" },
     { data: "recipient" },
     { data: "message" },
     { data: "etat" }
    ]
   })
});

如您所见,对于每一列,我将其链接到数据库中表的一列。我想在这些数据选项中放置一个数组。类似的东西:

{ data: "$arrayMess" }

但它不起作用。

如何从查询中获取数据,并将其放入 Datatable 中?

【问题讨论】:

  • { data: "&lt;?php echo json_encode($arrayMess); ?&gt;" } 试试这个
  • 当我这样做时,我有一个“意外令牌非法”
  • 然后将值赋给var a ="&lt;?php echo json_encode($arrayMess); ?&gt;" 等变量并在数组中添加variable a
  • 触发同样的错误,token ILLEGAL。

标签: javascript php jquery codeigniter datatable


【解决方案1】:

数据表以 json 的形式获取数据,因此只需 json_encode 你的数组,你的任务就会完成

【讨论】:

  • 我这样做了,但是当我这样做时:{ data: "" } 我有 'Unexpected Identifier'
【解决方案2】:

我认为您遵循 MVC 架构,那么您使用 ajax 从视图中调用的函数应该返回 json 格式输出。

在控制器处,

public function datatable(){
        $data = $this->log_send_model->getListDetailled($conditions,array('from'=>$this->uri->segment(4)),array('orderBy'=>array('id_log_send'=>'desc')));
        $arrayMess = array();
           // Other array for columns

           foreach ($data as $value) {
              # code...
              array_push($arrayMess, $value->message);
              //var_dump($arrayMess);

        }
      echo json_encode($arrayMess);
}

在视图数据表部分添加此代码,

    <table id="datatable">
      <thead>
         <tr>
           <th>id_log_send</th>
            <th>Date</th>
            <th>Recipient</th>
            <th>Message</th>
            <th>Etat</th>
         </tr>
    </thead>
    </table>
     <script>  
       $(document).ready(function () {
       if ( ! $.fn.dataTable.isDataTable( '#datatable' ) ) {
              var table = $("#datatable").DataTable();
            }
        $.ajax({
           "url": "<?php echo base_url()."DatatableControl/dataTable"; ?>",
            "type": "POST",
            success:function(data){
           $.each(data,function(i,item){
                        $('#datatable').dataTable().fnAddData( [
                            "<tr><td>"+item.id_log_send+"</td>",
                            "<td>"+item.date+"</td>",
                            "<td>"+item.recipient+"</td>",
                            "<td>"+item.message+"</td>",
                             "<td>"+item.etat+"</td></tr>"] );
                    });
           },error:function(error){ console.log(error);}
        });
});
</script>

希望对你有帮助

【讨论】:

  • 我有一个 500 内部错误,“未捕获的类型错误:参数 1 传递给 CI:Exceptions.....”。
  • 当我使用控制器中的 dataTable 方法时
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
相关资源
最近更新 更多