1

首先很抱歉我的解释不好。目前,我有一个表可能会在 3000 之前插入数据,我得到了人们使用数据表的建议。但我在这方面真的很新,我已经尝试了另一个数据表示例但仍然无法正常工作.

我已经为作为对象数据源的服务器端创建了数据表,但它似乎不像我预期的那样工作良好。请帮助我展示如何通过 json 对象数据源创建数据表的正确方法。下面是我的代码:

        <script type="text/javascript" charset="utf8" src="../cdc/datatables/media/js/jquery-1.11.1.min.js"></script>

        <script type="text/javascript" charset="utf8" src="../cdc/datatables/media/js/jquery.dataTables.min.js"></script>

        <script language="javascript">
$(document).ready(function() {
    $('#cdcTracking-list').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "../cdc/load/jsonTrack.php",
        "columns": [
            { "elements": "vesselCode" },
            { "elements": "voyage" },
            { "elements": "chasisNo" },
            { "elements": "plateNo" },
            { "elements": "bookingRef" },
            { "elements": "serviceTerm" }
        ]
    } );
} );
        </script> 

    <table id="cdcTracking-list" class="display">
        <thead>
            <tr>
                <th>No. </th>
                <th>Vessel </th>
                <th>Voyage </th>
                <th>Chasis No</th>
                <th>Plate</th>
                <th>Booking Ref</th>
            </tr>
        </thead>
    </table>

$getSessionList = getVehicleTrkDetail();
if (count($getSessionList) > 0) {
    $data = array();
    for ($i = 0; $i < count($getSessionList); $i ++) {
        $getSessionListRecord = $getSessionList[$i];
        $data[$i] = array(
            vesselCode => $getSessionListRecord['vesselCode'],
            voyage => $getSessionListRecord['voyage'],
            chasisNo => $getSessionListRecord['chasisNo'],
            plateNo => $getSessionListRecord['plateNo'],
            bookingRef => $getSessionListRecord['bookingRef']
        );
    }
    $json = array(
        status => "success",
        elements => $data
    );
} else {
    $json = array(
        status => "failure"
    );
}
echo json_encode($json);

{"status":"success","elements":[
{"vesselCode":"CE",
"voyage":"V01",
"chasisNo":"PL82A53DR61302244 ",
"plateNo":null,
"bookingRef":"V007\/E\/-00006"},
{"vesselCode":"CE",
"voyage":"V01",
"chasisNo":"PL1C21LNR6B101100",
"plateNo":null,
"bookingRef":"V007\/E\/-00006"}

请有人帮助我的初学者体验。谢谢

4

1 回答 1

2

当我尝试将我的第一个 ajax 加载表放在一起时,我也遇到了一些麻烦。您可以从数组结构或类结构中提供 json,我的方法使用 stdClass。

javascript:
要从您的 json 设置值,您必须引用“数据”字段。如果您打算使用任何样式,您还可以从此处设置列类和其他任何内容

<script language="javascript">
$(document).ready(function() {
    $('#cdcTracking-list').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "../cdc/load/jsonTrack.php",
        "columns": [
            { "data": "number" },
            { "data": "vesselCode" },
            { "data": "voyage" },
            { "data": "chasisNo" },
            { "data": "plateNo" },
            { "data": "bookingRef" }
        ]
    } );
} );
</script>

php:
该表还期望您提供的数据位于具有“数据”键的数组或具有“数据”属性的类中。因此,如果您愿意,无论您在哪里看到“stdClass”,都可以用数组替换。

<?php
$getSessionList = getVehicleTrkDetail();
//As I stated before, I used a class for my data.  
//You can also use an array but it still needs a 'data' field
$tableData = new stdClass();
$tableData->data = array();

if (count($getSessionList) > 0) {

    for ($i = 0; $i < count($getSessionList); $i ++) {
        $getSessionListRecord = $getSessionList[$i];

        $data = new stdClass(); //Changed to class here
        $data->number       = $i;
        $data->vesselCode   = $getSessionListRecord['vesselCode'];
        $data->voyage       = $getSessionListRecord['voyage'];
        $data->chasisNo     = $getSessionListRecord['chasisNo'];
        $data->plateNo      = $getSessionListRecord['plateNo'];
        $data->bookingRef   = $getSessionListRecord['bookingRef'];

        array_push($tableData->data, $data);

        //Since you don't declare this in the javascript for the table,
        //you shouldn't have it served up.  
        //Otherwise you will get a DataTables error
        //$data->serviceTerm  = 'Service Term';
    }

    $tableData->status = "success";
} else {
    //Note: this will also cause an error because you're not serving up any 
    //      fields that the API is expecting.  You might want to at least have
    //      empty fields or default data so it displays something.
    $tableData->status = "failure";
}
echo json_encode($tableData);
?>
于 2014-11-17T17:16:38.247 回答