如何将JSON编码的PHP数组发送到同一页面上的数据表

时间:2015-04-03 22:58:56

标签: javascript php jquery json datatable

这里有一个简单的问题,但我是数据表的新手,请原谅我的无知:我有一个查询我放在一个数组中的行然后用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一般都很陌生,所以如果这是一个简单的问题就道歉。我试图阅读文档,但遇到了麻烦。

提前致谢

1 个答案:

答案 0 :(得分:1)

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

你可以在php脚本

之后简单地设置这样的数据
var tableData = <?php echo json_encode($data); ?>;  

然后在datatable initialize方法中,使用此

$(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" }
        ]
    });
});