如何通过 Ajax 在 jQuery DataTables 中显示 JSON 数据?

Posted

技术标签:

【中文标题】如何通过 Ajax 在 jQuery DataTables 中显示 JSON 数据?【英文标题】:How to display JSON data in jQuery DataTables via Ajax? 【发布时间】:2015-12-08 12:05:33 【问题描述】:

我一直在尝试在 jQuery DataTables 组件中获取我的 JSON 数据。

首先我编写了一个 javascript 和一个视图,如下所示:

$.fn.dataTable.Editor(
    ajax: "http://localhost/example22/index.php?r=site/display",
    table: "#example",
    fields: [
        label: "Name:",
        name: "name"
    , 
        label: "Designation:",
        name: "designation"
    , 
        label: "Address:",
        name: "address"
    , 
        label: "Salary:",
        name: "salary"
    ]
);

$('#example').DataTable(
    lengthChange: false,
    ajax: "http://localhost/example22/index.php?r=site/display",
    columns: [
        allk: "name"
    , 
        allk: "designation"
    , 
        allk: "address"
    , 
        allk: "salary"
    ],
    select: true
);

和类似的视图

<table id="example" class="table table-striped table-bordered" cellspacing="0" >
        <thead>
            <tr>
                <th>Name</th>
                <th>Designation</th>
                <th>Address</th>
                <th>Salary</th>
            </tr>
        </thead>
</table>

并且提供的url分别包含以下JSON数据


    "allk": [
        
            "name": "raju",
            "designation": "developer",
            "address": "he is from viswasapuram",
            "salary": "30000"
        ,
        
            "name": "bob",
            "designation": "designer",
            "address": "no idea",
            "salary": "100000"
        ,
        
            "name": "bob",
            "designation": "designer",
            "address": "no idea",
            "salary": "100000"
        ,
        
            "name": "suresh",
            "designation": "designer",
            "address": "fffswss",
            "salary": "1212"
        ,
        
            "name": "john",
            "designation": "designer",
            "address": "california",
            "salary": "3000000"
        ,
        
            "name": "suresh",
            "designation": "tester",
            "address": "he is from cheeran maanagar",
            "salary": "20000"
        
    ]

有人可以帮助我了解如何在此应用程序中使用 DataTables 吗?

【问题讨论】:

【参考方案1】:

解决方案

使用ajax.dataSrc 选项在您的 JSON 响应中指定保存数据的属性。

例如:

$('#example').DataTable(
   // ... skipped other options ...
   ajax: 
       url: "http://localhost/example22/index.php?r=site/display",
       dataSrc: 'allk'
   ,
   columns: [
        data: "name", 
        data: "designation", 
        data: "address" , 
        data: "salary"
   ]
);

演示

有关代码和演示,请参阅 this jsFiddle。

【讨论】:

【参考方案2】:

在 Nodejs 中,当你有一个像这样声明的 DataTable 时

<table id="example" class="table table-striped table-bordered" style="width:100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Class</th>
            <th>Parents Name</th>
            <th>Age</th>
        </tr>
    </thead>
</table>

那么你的java脚本应该是这样的

$(document).ready(function() 
    $("#example").DataTable(
        ajax: 
            url: "../kidsinfo",
            dataSrc: ""
        ,
        columns: [
             data: "kid_name" ,
             data: "class" ,
             data: "parents_name" ,
             data: "age" ,           
        ],          
        iDisplayLength: 1,
        iDisplayStart: 0
    );
);

这里需要注意的重要一点是你的服务器的json数据是这样的

["id":1,"kid_name":"John","class":"Hancock","parents_name":"dharam","age":"21"]

那么您的 javascript 代码应使用收到的 json 数据中的名称 kid_name 来关联您要在列中显示的信息。

如果来自服务器的json数据是这样的


    "info": [
        "id": 1,
        "kid_name": "John",
        "class": "Hancock",
        "parents_name": "dharam",
        "age": "21"
    ]

那么你的java脚本应该有dataSrc: "info"

【讨论】:

以上是关于如何通过 Ajax 在 jQuery DataTables 中显示 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Jquery/AJAX 上传文件 [重复]

jQuery Datatable,通过 UI 调整 col 宽度

如何通过onRowSelect ajax事件调用jQuery? [重复]

Laravel - 如何通过 AJAX (jQuery) 调用控制器函数

如何通过 AJAX 调用使用 jQuery 渲染 HTML

如何通过 AJAX 将 Jquery 可拖动 UI 与 mysql 连接