Jquery 如何将JSON数据插入DataTable

Jquery 如何将JSON数据插入DataTable,jquery,html,json,Jquery,Html,Json,我是Javascript新手,我尝试通过点击按钮将Json数据动态加载到datatable中 我的Json数据格式如下 [{"DeviceName":"AND1","IPAddress":"10.10.12.1221"}, {"DeviceName":"AND2","IPAddress":"10.10.12.1222"},{"DeviceName":"AND3","IPAddress":"10.10.12.1223"}] [{“DeviceName”:“AND1”,“IPAddress”:“

我是Javascript新手,我尝试通过点击按钮将Json数据动态加载到datatable中

我的Json数据格式如下

[{"DeviceName":"AND1","IPAddress":"10.10.12.1221"}, {"DeviceName":"AND2","IPAddress":"10.10.12.1222"},{"DeviceName":"AND3","IPAddress":"10.10.12.1223"}] [{“DeviceName”:“AND1”,“IPAddress”:“10.10.12.1221”},{“DeviceName”:“AND2”,“IPAddress”:“10.10.12.1222”},{“DeviceName”:“AND3”,“IPAddress”:“10.10.12.1223”}] 以下是我的完整Html代码: 当我运行这段代码时,我在(“#deviceTable”)的processDeviceDataResults中得到一个UncaughtType错误。但是,我很确定这不是将数据加载到datatable的方式

//Set the hubs URL for the connection var url = 'http://localhost:8080/signalr'; var connection = $.hubConnection(url); // Declare a proxy to reference the hub. var hubProxy = connection.createHubProxy('HubClass'); hubProxy.on('DeviceDataResults', processDeviceDataResults); connection.start().done(function() { $("#GetDeviceData").click(function() { hubProxy.invoke('GetDeviceData'); }); }); function processDeviceDataResults(results) { $('#deviceTable').dataTable({ "aodata": results }); } //设置连接的集线器URL var url='1〕http://localhost:8080/signalr'; 变量连接=$.hubConnection(url); //声明代理以引用中心。 var hubProxy=connection.createHubProxy('HubClass'); on('DeviceDataResults',processDeviceDataResults); connection.start().done(函数()){ $(“#GetDeviceData”)。单击(函数(){ 调用('GetDeviceData'); }); }); 函数processDeviceDataResults(结果){ $(“#deviceTable”).dataTable({ “aodata”:结果 }); } 试试这个

data.json

    {
    "data": [
        {
            "DeviceName": "AND1",
            "IPAddress": "10.10.12.1221"
        },
        {
            "DeviceName": "AND2",
            "IPAddress": "10.10.12.1222"
        },
        {
            "DeviceName": "AND3",
            "IPAddress": "10.10.12.1223"
        }
    ]
}
js


这里的示例

Jifho,感谢您的回复。我按照您的建议格式化了JSON数据,得到了一个“UncaughtTypeError:Undefined不是$('#deviceTable').dataTable行上的函数。我在html正文中定义了一个表

$(文档).ready(函数(){ var url='1〕http://localhost:8080/signalr'; 变量连接=$.hubConnection(url); //声明代理以引用中心。 var hubProxy=connection.createHubProxy('HubClass'); on('DeviceDataResults',processDeviceDataResults); connection.start().done(函数(){ $(“#GetDeviceData”)。单击(函数(){ 调用('GetDeviceData'); }); }); 函数processDeviceDataResults(结果){ $(“#deviceTable”).dataTable({ “ajax”:结果, “栏目”:[ {“数据”:“设备名称”}, {“数据”:“IPAddress”} ] }); } }); 我的JSON结果:

{"data":[{"DeviceName":"AND1","IPAddress":"10.10.12.1221"},{"DeviceName":"AND2","IPAddress":"10.10.12.1222"},{"DeviceName":"AND3","IPAddress":"10.10.12.1223"}]} {“数据”:[{“DeviceName”:“AND1”,“IPAddress”:“10.10.12.1221”},{“DeviceName”:“AND2”,“IPAddress”:“10.10.12.1222”},{“DeviceName”:“AND3”,“IPAddress”:“10.10.12.1223”}
Venkata,直到您提到的更改,它才得到一个“未捕获的TypeError:Undefined不是$(“#deviceTable”)上的函数。数据表行

是的,Venkata它们在Head标记中引用。这是引用它们的顺序

src=“text/javascript”src=“Scripts/jquery-1.6.4.js”

src=“//cdn.datatables.net/1.10.2/js/jquery.datatables.min.js”

href=”https://cdn.datatables.net/1.10.2/css/jquery.dataTables.min.css"

href=”https://cdn.datatables.net/autofill/1.2.1/css/dataTables.autoFill.css"

src=”https://code.jquery.com/jquery-1.11.1.js"


src=“Scripts/jquery.signalR-2.1.2.js”

marak通过ajax将数据加载到其他文件中

ajax.php

  <?php

//in ajax.php get json data
//Here you can create a function that returns the data
$response='
{
    "data": [
        {
            "DeviceName": "AND1",
            "IPAddress": "10.10.12.1221"
        },
        {
            "DeviceName": "AND2",
            "IPAddress": "10.10.12.1222"
        },
        {
            "DeviceName": "AND3",
            "IPAddress": "10.10.12.1223"
        }
    ]
}';

echo $response;
?>

dataTableJson.php

    <!DOCTYPE >
  <html>
  <head>
    <title>Data Table Json</title>

      <link rel="stylesheet" href="http://cdn.datatables.net/1.10.2/css/jquery.dataTables.min.css" />
      <link rel="stylesheet" href="http://cdn.datatables.net/autofill/1.2.1/css/dataTables.autoFill.css" />


      <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
      <script type="text/javascript" src="http://cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js"></script>

  <script>

    $(document).ready(function() {

      $('#deviceTable').dataTable({
          "ajax": "ajax.php",
          "columns": [
            { "data": "DeviceName" },
            { "data": "IPAddress" }
        ]
      });
    });
  </script>

</head>
<body>
  <table id="deviceTable" class="hover" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Device</th>
                <th>IP</th>
            </tr>
        </thead> 

        <tfoot>
            <tr>
                <th>Device</th>
                <th>IP</th>
            </tr>
        <tfoot>
    </table>
</body>
</html>

数据表Json
$(文档).ready(函数(){
$(“#deviceTable”).dataTable({
“ajax”:“ajax.php”,
“栏目”:[
{“数据”:“设备名称”},
{“数据”:“IPAddress”}
]
});
});
装置
知识产权
装置
知识产权

请原谅我的间距不当,我在编辑时没有看到任何空格,但不确定提交后它们是如何添加的……Jifho,感谢您的回复。我按照您的建议格式化了JSON数据,得到了一个“Uncaught TypeError:Undefined不是$(“#deviceTable”)上的函数。dataTable行。我在html正文中定义了一个表作为Jifho,我在results对象中获取数据。但我无法将其插入表中。在访问dataTable($(“#deviceTable”)时.dataTable),我得到一个未捕获的TypeError:Undefined不是一个函数错误尝试首先使用预定义的数据创建表,而不使用函数processDeviceDataResults()Jifho,我通过在dataTable引用之上添加Jquery 1.11.1引用来解决它。
  <?php

//in ajax.php get json data
//Here you can create a function that returns the data
$response='
{
    "data": [
        {
            "DeviceName": "AND1",
            "IPAddress": "10.10.12.1221"
        },
        {
            "DeviceName": "AND2",
            "IPAddress": "10.10.12.1222"
        },
        {
            "DeviceName": "AND3",
            "IPAddress": "10.10.12.1223"
        }
    ]
}';

echo $response;
?>
    <!DOCTYPE >
  <html>
  <head>
    <title>Data Table Json</title>

      <link rel="stylesheet" href="http://cdn.datatables.net/1.10.2/css/jquery.dataTables.min.css" />
      <link rel="stylesheet" href="http://cdn.datatables.net/autofill/1.2.1/css/dataTables.autoFill.css" />


      <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
      <script type="text/javascript" src="http://cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js"></script>

  <script>

    $(document).ready(function() {

      $('#deviceTable').dataTable({
          "ajax": "ajax.php",
          "columns": [
            { "data": "DeviceName" },
            { "data": "IPAddress" }
        ]
      });
    });
  </script>

</head>
<body>
  <table id="deviceTable" class="hover" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Device</th>
                <th>IP</th>
            </tr>
        </thead> 

        <tfoot>
            <tr>
                <th>Device</th>
                <th>IP</th>
            </tr>
        <tfoot>
    </table>
</body>
</html>