数据表未正确读取 JSON 数据
Datatables not correctly reading JSON data
所以我环顾四周,找不到任何人遇到我现在遇到的问题。我使用 Jquery 数据表并使用 JSON 填充此数据表,我从 ajax 调用中收到。我不断收到 tn 4 错误,这意味着我有一个未知参数。 https://www.datatables.net/manual/tech-notes/4。但我不明白为什么会这样!我将尝试提供尽可能详细的信息,看看是否有人可以帮助我解决这个烦人的问题!
这是我收到的确切错误代码。
DataTables warning: table id = manageUsersTable - Requested unknown parameter 'CONCAT(E.FNAME, '', E.LNAME)' for row 0. For more information about this error, please see 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"}]
尝试为您的 CONCAT() 语句设置别名。
SELECT CONCAT(E.FNAME, ' ', E.LNAME) AS name1, etc...
为您的数据库函数字段使用别名
$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"}
]
所以我环顾四周,找不到任何人遇到我现在遇到的问题。我使用 Jquery 数据表并使用 JSON 填充此数据表,我从 ajax 调用中收到。我不断收到 tn 4 错误,这意味着我有一个未知参数。 https://www.datatables.net/manual/tech-notes/4。但我不明白为什么会这样!我将尝试提供尽可能详细的信息,看看是否有人可以帮助我解决这个烦人的问题!
这是我收到的确切错误代码。
DataTables warning: table id = manageUsersTable - Requested unknown parameter 'CONCAT(E.FNAME, '', E.LNAME)' for row 0. For more information about this error, please see 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"}]
尝试为您的 CONCAT() 语句设置别名。
SELECT CONCAT(E.FNAME, ' ', E.LNAME) AS name1, etc...
为您的数据库函数字段使用别名
$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"}
]