【问题标题】:How to send JSON encoded PHP array to datatables on same page如何将 JSON 编码的 PHP 数组发送到同一页面上的数据表
【发布时间】:2015-04-03 22:58:55
【问题描述】:

这里有一个简单的问题,但对数据表很陌生,所以请原谅我的无知:我有一个查询行,我将其放在一个数组中,然后以 JSON 格式对其进行编码,如何将此数组发送到数据表以填充每一行?我查看了其他线程,但他们使用 ajax 从外部引用脚本,而我的位于同一页面上(不确定这是否有所不同)。我的脚本如下所示:

<?php
if(isset($_POST['post_id'])){
    $in = $_POST['post_id'];
}
$data = array();
foreach ($in as $id){
    $query = $link->prepare("SELECT provider_num, provider_name, 233_net_charity_care, 291_cost_of_non_mcr_bad_debts, 301_cost_of_uncomp_care 
                            FROM `s10`
                            WHERE `id` = :id");
    $query->bindParam(':id', $id, PDO::PARAM_INT);
    $query->execute();
    $results = $query->fetch(PDO::FETCH_ASSOC);
    $data[] = $results;
}
json_encode($data);
?>

其中 post_id 是从前一个表单提交到页面的初始 id 值数组,为简单起见,假设我这次只提交了一行。

JSON 输出如下所示

[{"provider_num":"140124","provider_name":"JOHN H. STROGER JR. HOSP OF COOK CTY","233_net_charity_care":"163307737","291_cost_of_non_mcr_bad_debts":"181677291","301_cost_of_uncomp_care":"344985028"}]

然后我以什么方式初始化数据表来接收这些数据

到目前为止我有:

$(document).ready(function() {
    $('#example').dataTable( {
        "ajax": "",                      <== What goes here?
        "columns": [
            { "data": "provider_num" },
            { "data": "provider_name" },
            { "data": "233_net_charity_care" },
            { "data": "291_cost_of_non_mcr_bad_debts" },
            { "data": "301_cost_of_uncomp_care" }
        ]
    } );
} );

任何见解都会很棒,总的来说,我对 jquery 还是很陌生,所以如果这是一个简单的问题,我深表歉意。我试图阅读文档,但遇到了麻烦。

提前致谢

【问题讨论】:

  • json_encode(data) 应该是 echo json-encode(data)
  • 那么在这种情况下,只需将脚本设为外部,然后在数据表的 ajax 字段中引用它?目前它在同一页面上,我不希望它在该页面上回显
  • @Barmar,你的评论让我发笑。 ajax: 是数据表获取外部 JSON 数据的地方。

标签: javascript php jquery json datatable


【解决方案1】:

首先,如果您的前端脚本和服务器脚本(php)在同一个页面中,则不需要使用 ajax。

你可以在你的 php 脚本之后像这样简单地设置数据

var tableData = <?php echo json_encode($data); ?>;  

然后在datatable的初始化方法中,使用这个

$(document).ready(function() {
    $('#example').dataTable({
        "aaData": tableData,                               
        "aoColumns": [
            { "data": "provider_num" },
            { "data": "provider_name" },
            { "data": "233_net_charity_care" },
            { "data": "291_cost_of_non_mcr_bad_debts" },
            { "data": "301_cost_of_uncomp_care" }
        ]
    });
});

【讨论】:

  • 引用最后一个 aoColumns 数组 title 属性缺失。
  • @Sohel 我使用了你的代码,但我得到了行'0'的'请求参数'0'。不知道这意味着什么...我所拥有的只是一个表的骨架&lt;table id="compTab" class="table"&gt; &lt;thead&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;/tbody&gt; &lt;/table&gt; 进行初始化,然后我将var tableData = &lt;?php echo json_encode($data); ?&gt;; 放在document.ready 之后
  • 用“数据”替换“标题”修复了它。如果您更改标记,我会继续并将其标记为正确。感谢朋友的帮助。
  • @Habitat,完成。可能是不同的版本,或者我错过了一些东西。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
相关资源
最近更新 更多