【问题标题】:How to parse nested JSON object in ajax using DataTables如何使用 DataTables 解析 ajax 中的嵌套 JSON 对象
【发布时间】:2016-03-30 04:32:43
【问题描述】:

我正在尝试迁移到 jQuery 的 DataTables Table 插件

下面的 json 结果与数据表的对象数据源一起工作的正确方法是什么?我尝试了嵌套的 Object 数据源示例和其他示例,但仍然无法正常工作:

{
 "query": {
 ...
  "diagnostics": {
   "publiclyCallable": "true",
   "url": {
    "execution-start-time": "1",
...
   },
   "user-time": "68",
  },
  "results": {
   "item": [
    {
     "title": "",
     "description": 
......

我试过了:

$('#example').DataTable( {
    "processing": true,
    "serverSide": true,
    "ajax": "scripts/objects.php",
    "columns": [
        { "query.results.item": "title" },
        { "query.results.item": "description" },
        { "query.results.item": "position" },
        { "query.results.item": "office" },
        { "query.results.item": "start_date" },
        { "query.results.item": "salary" }
    ]

错误是:

SyntaxError: missing ; before statement

{"query":{"count":16,"created":"2016-03-30T02:41:49Z","lang":"en-US"

非常感谢!

【问题讨论】:

  • 您在代码中忘记了;

标签: jquery json ajax datatable yql


【解决方案1】:

语法错误:缺失;声明之前

这是运行时 JavaScript 错误,与 jquery、datatable 无关。

您很可能有一个额外的)

【讨论】:

  • 我认为这不是正确的答案,因为我遇到过这种错误,但不是因为缺少一个;
【解决方案2】:

使用 Data-tables 的一种简单方法是通过这种方式-

服务器端代码(PHP)-

$data = array();
while( $row=mysqli_fetch_array($query) )
{  // Preparing an array For Returning Reponce
    $nestedData=array(); 
    $nestedData = array (
                            "employee_name"         =>  $nestedData[] = $row["employee_name"],
                            "employee_salary"       =>  $nestedData[] = $row["employee_salary"],
                            "employee_age"          =>  $nestedData[] = $row["employee_age"]
                        );
    $data[] = $nestedData;
}
$json_data  =   array(
                        "draw"            => intval( $draw_request_code ),   // for every request/draw by clientside , they send a number as a parameter, when they recieve a response/data they first check the draw number, so we are sending same number in draw. 
                        "recordsTotal"    => intval( $totalData ),  // total number of records
                        "recordsFiltered" => intval( $totalFiltered ), // total number of records after searching, if there is no searching then totalFiltered = totalData
                        "data"            => $data   // total data array
                    );
echo json_encode($json_data);  // send data as json format

服务器端的 JS 将是这样的-

var dataTable = $('#employee-grid').DataTable(
{
    "processing": true,
    "serverSide": true,
    "ajax":
    {
        url :"employee-grid-data.php", // json datasource
        type: "post",  // method  , by default get
        error: function()
        {  // error handling
            $(".employee-grid-error").html("");
            $("#employee-grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>');
            $("#employee-grid_processing").css("display","none");
        }
    },
    "columns":  [               //Name should be same as PHP file JSON NAmes and ordering should be as in the HTML file
                    {   "data": "employee_name"         },
                    {   "data": "employee_salary"       },
                    {   "data": "employee_age"          }
                ]
});

GitHub code 中为您提供了一个简单示例。

更简单的例子给出here

GitHub repo 中提供了该插件的高级用法。

更多内容请访问 this documentations

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多