【问题标题】:Datatables not correctly reading JSON data数据表未正确读取 JSON 数据
【发布时间】:2015-07-25 01:51:51
【问题描述】:

所以我环顾四周,找不到任何人遇到我现在遇到的问题。我使用 Jquery Datatables 并使用我从 ajax 调用收到的 JSON 填充此数据表。我不断收到 tn 4 错误,这意味着我有一个未知参数。 https://www.datatables.net/manual/tech-notes/4。但我不明白为什么会这样!我将尝试提供尽可能多的细节,看看是否有人可以帮助我解决这个烦人的问题!

这是我收到的确切错误代码。

DataTables 警告:表 id = manageUsersTable - 请求第 0 行的未知参数 'CONCAT(E.FNAME, '', E.LNAME)'。有关此错误的详细信息,请参阅 http://datatables.net/tn.4

这是我的 PHP 查询:

$result = $conn->query("SELECT CONCAT(E.FNAME, ' ', E.LNAME), CONCAT(M.FNAME, ' ', M.LNAME), E.ISTERMINATED FROM EMPLOYEE E INNER JOIN EMPLOYEE M ON M.ID = E.SUPERVISOR;")

这是初始化数据表的javasript:

manageUsersTable = $('#manageUsersTable').dataTable({
    "responsive": true,
    "sAjaxDataProp": "",
    "sAjaxSource": "all_emps.php",
    "aoColumns":[
        { "mData": "CONCAT(E.FNAME, ' ', E.LNAME)"},
        { "mData": "CONCAT(M.FNAME, ' ', M.LNAME)"},
        { "mData": "ISTERMINATED"}
    ]
});  
$('#manageUsersTable tbody').on( 'click', 'tr', function () {
    if ( $(this).hasClass('selected') ) {
        $(this).removeClass('selected');
    }
    else {
        manageUsersTable.$('tr.selected').removeClass('selected');
        $(this).addClass('selected');
    }
});

我有一个 ajax 调用,用于通过执行 console.log 来查看数据,这就是那个调用。

$.ajax({ url: 'all_emps.php',
        type: 'post',
        success: function(data){
            console.log(data);   
        }
});

这是我看到的 JSON 值:

[{"CONCAT(E.FNAME, ' ', E.LNAME)":"John Paul","CONCAT(M.FNAME, ' ', M.LNAME)":"Bob Saget","ISTERMINATED":"Employed"},{"CONCAT(E.FNAME, ' ', E.LNAME)":"Jim Bob","CONCAT(M.FNAME, ' ', M.LNAME)":"Bob Saget","ISTERMINATED":"Employed"},{"CONCAT(E.FNAME, ' ', E.LNAME)":"Saget Bob","CONCAT(M.FNAME, ' ', M.LNAME)":"Bobbity Saget","ISTERMINATED":"Employed"},{"CONCAT(E.FNAME, ' ', E.LNAME)":"Sagetty Bob","CONCAT(M.FNAME, ' ', M.LNAME)":"Bob Sagetry","ISTERMINATED":"Employed"},{"CONCAT(E.FNAME, ' ', E.LNAME)":"Sagetry Bob","CONCAT(M.FNAME, ' ', M.LNAME)":"Wilbur Wright","ISTERMINATED":"Employed"}]

【问题讨论】:

    标签: php jquery mysql json datatable


    【解决方案1】:

    为您的数据库函数字段使用别名

    $result = $conn->query("SELECT CONCAT(E.FNAME, ' ', E.LNAME) as ENAME, CONCAT(M.FNAME, ' ', M.LNAME) as MNAME, E.ISTERMINATED FROM EMPLOYEE E INNER JOIN EMPLOYEE M ON M.ID = E.SUPERVISOR;")
    

    并在您的数据表列 defs 中使用这些名称

    "aoColumns":[
        { "mData": "ENAME"},
        { "mData": "MNAME"},
        { "mData": "ISTERMINATED"}
    ]
    

    【讨论】:

    • 感谢完美工作的人!我会投票,但我很蹩脚,我没有 15 个代表大声笑。
    【解决方案2】:

    尝试为您的 CONCAT() 语句设置别名。

    SELECT CONCAT(E.FNAME, ' ', E.LNAME) AS name1, etc...
    

    【讨论】:

    • 也谢谢您!这正是我所需要的。
    猜你喜欢
    • 2023-03-26
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多