具有动态列的数据表
DataTables with Dynamic Columns
我正在尝试使用 JSON 呈现包含动态列的数据表,但不断出现以下错误:
Uncaught TypeError: Cannot read property 'length' of undefined.
如有任何帮助,我们将不胜感激。
谢谢!!
JS:
<link href="http://cdn.datatables.net/1.10.4/css/jquery.dataTables.css" rel="stylesheet" type="text/css"/>
<script src="http://cdn.datatables.net/1.10.4/js/jquery.dataTables.js" type="text/javascript"></script>
jQuery(document).ready(function() {
var dataObject = '[{"COLUMNS":[{ "sTitle": "NAME"}, { "sTitle": "COUNTY"}],"DATA":[["John Doe","Fresno"],["Billy","Fresno"],["Tom","Kern"],["King Smith","Kings"]]}]';
var columns = [];
jQuery.each(dataObject.COLUMNS, function(i, value){
var obj = { sTitle: value };
columns.push(obj);
});
jQuery('#example').dataTable({
"bProcessing": true,
"bPaginate": true,
"sPaginationType": "full_numbers",
"aaData": dataObject.DATA,
"aoColumns": columns
});
});
HTML:
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
<tr><thead>column1</thead></tr>
<tbody></tbody>
</table>
你的 dataObject 声明是针对一个字符串,而不是一个具有属性 "COLUMNS" 和 DATA 的对象 - 删除开头的 '[ 和结尾的 '] 这样你就有了这个(这将是一个对象):
var dataObject = {"COLUMNS":[{ "sTitle": "NAME"}, { "sTitle": "COUNTY"}],"DATA":[["John Doe","Fresno"],["Billy","Fresno"],["Tom","Kern"],["King Smith","Kings"]]};
您好,代码中有几个问题...
- dataObject 是字符串,而不是 json。所以你可以使用 eval() 或删除 '
使其成为 json object
- 您在数据中传递的参数名称table是错误的。您需要提供准确的参数。
- 您正在使用 parent json object 作为数组。但是您没有使用 [] 来获取它的第一个元素。
- 你的html内容是table是错误的。因为您使用 java 脚本传递列名。你不需要 html table headers。由于此 html 代码而实际发生的长度错误。如果您删除 table 中的 html,那么您的代码将不会出现长度错误。但我提到的上述错误仍然存在。请检查下面的代码。可能您正在寻找此代码...
jQuery(document).ready(function() {
var dataObject = eval('[{"COLUMNS":[{ "title": "NAME"}, { "title": "COUNTY"}],"DATA":[["John Doe","Fresno"],["Billy","Fresno"],["Tom","Kern"],["King Smith","Kings"]]}]');
var columns = [];
$('#example').dataTable({
"data": dataObject[0].DATA,
"columns": dataObject[0].COLUMNS
});
});
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
</table>
我认为有了这个生活会更轻松
jQuery(document).ready(function() {
var dataObject = {
columns: [{
title: "NAME"
}, {
title: "COUNTY"
}],
data: [
["John Doe", "Fresno"],
["Billy", "Fresno"],
["Tom", "Kern"],
["King Smith", "Kings"]
]
};
var columns = [];
$('#example').dataTable({
"data": dataObject.data,
"columns": dataObject.columns
});
});
<link href="https://cdn.datatables.net/1.10.9/css/jquery.dataTables.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"></script>
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
收到警告:请求未知错误的人https://datatables.net/tn/4,请检查您的json数据格式。下面的例子可能对你有帮助。
var dataObject = eval('[{"columns":[{ "title": "Id", "data":"Id"}, { "title": "Name", "data":"Name"}],"data":[{"Id":"123","Name":"John Doe Fresno"}, {"Id":"124","Name":"Alice Alicia"}]}]');
$('#example').DataTable(dataObject[0]);
我正在尝试使用 JSON 呈现包含动态列的数据表,但不断出现以下错误:
Uncaught TypeError: Cannot read property 'length' of undefined.
如有任何帮助,我们将不胜感激。
谢谢!!
JS:
<link href="http://cdn.datatables.net/1.10.4/css/jquery.dataTables.css" rel="stylesheet" type="text/css"/>
<script src="http://cdn.datatables.net/1.10.4/js/jquery.dataTables.js" type="text/javascript"></script>
jQuery(document).ready(function() {
var dataObject = '[{"COLUMNS":[{ "sTitle": "NAME"}, { "sTitle": "COUNTY"}],"DATA":[["John Doe","Fresno"],["Billy","Fresno"],["Tom","Kern"],["King Smith","Kings"]]}]';
var columns = [];
jQuery.each(dataObject.COLUMNS, function(i, value){
var obj = { sTitle: value };
columns.push(obj);
});
jQuery('#example').dataTable({
"bProcessing": true,
"bPaginate": true,
"sPaginationType": "full_numbers",
"aaData": dataObject.DATA,
"aoColumns": columns
});
});
HTML:
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
<tr><thead>column1</thead></tr>
<tbody></tbody>
</table>
你的 dataObject 声明是针对一个字符串,而不是一个具有属性 "COLUMNS" 和 DATA 的对象 - 删除开头的 '[ 和结尾的 '] 这样你就有了这个(这将是一个对象):
var dataObject = {"COLUMNS":[{ "sTitle": "NAME"}, { "sTitle": "COUNTY"}],"DATA":[["John Doe","Fresno"],["Billy","Fresno"],["Tom","Kern"],["King Smith","Kings"]]};
您好,代码中有几个问题...
- dataObject 是字符串,而不是 json。所以你可以使用 eval() 或删除 ' 使其成为 json object
- 您在数据中传递的参数名称table是错误的。您需要提供准确的参数。
- 您正在使用 parent json object 作为数组。但是您没有使用 [] 来获取它的第一个元素。
- 你的html内容是table是错误的。因为您使用 java 脚本传递列名。你不需要 html table headers。由于此 html 代码而实际发生的长度错误。如果您删除 table 中的 html,那么您的代码将不会出现长度错误。但我提到的上述错误仍然存在。请检查下面的代码。可能您正在寻找此代码...
jQuery(document).ready(function() {
var dataObject = eval('[{"COLUMNS":[{ "title": "NAME"}, { "title": "COUNTY"}],"DATA":[["John Doe","Fresno"],["Billy","Fresno"],["Tom","Kern"],["King Smith","Kings"]]}]');
var columns = [];
$('#example').dataTable({
"data": dataObject[0].DATA,
"columns": dataObject[0].COLUMNS
});
});
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
</table>
我认为有了这个生活会更轻松
jQuery(document).ready(function() {
var dataObject = {
columns: [{
title: "NAME"
}, {
title: "COUNTY"
}],
data: [
["John Doe", "Fresno"],
["Billy", "Fresno"],
["Tom", "Kern"],
["King Smith", "Kings"]
]
};
var columns = [];
$('#example').dataTable({
"data": dataObject.data,
"columns": dataObject.columns
});
});
<link href="https://cdn.datatables.net/1.10.9/css/jquery.dataTables.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"></script>
<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
收到警告:请求未知错误的人https://datatables.net/tn/4,请检查您的json数据格式。下面的例子可能对你有帮助。
var dataObject = eval('[{"columns":[{ "title": "Id", "data":"Id"}, { "title": "Name", "data":"Name"}],"data":[{"Id":"123","Name":"John Doe Fresno"}, {"Id":"124","Name":"Alice Alicia"}]}]');
$('#example').DataTable(dataObject[0]);