【发布时间】:2015-07-02 14:13:26
【问题描述】:
我正在处理一个表单,其中用户选择一个日期范围,以便使用 DataTables 显示信息。
当用户点击按钮时,日期通过 jQuery .post() 函数发送并按预期检索信息。
这是与它相关的一段代码:
//Sending the dates range
$.post(url_route, datos, function(data,status){
if(status=='success'){
var response = jQuery.parseJSON(data);
//checking if data were found
if(response.list_events.length === 0){
console.log('No data available');
}
else{
//Let us display the info with DataTables inside div #list_events and
//table #table_id
$('#list_events').html('<table class="table table-striped table-hover" id="table_id"></table>');
$('#list_events table').append('<thead><tr><th>Event</th><th>Type</th><th>Attendance</th><th>Coordinators</th><th>Participants</th><th>Institutes</th><th>Talks</th></tr></thead><tbody></tbody>');
//retrieving the info for each row and append it to the table:
$.each(response.list_events,function(i,item)
{
$('#list_events').find('tbody').append('<tr>');
$('#list_events').find('tbody').append('<td>'+item.Event+'</td>');
$('#list_events').find('tbody').append('<td>'+item.Type+'</td>');
$('#list_events').find('tbody').append('<td>'+item.Attendance+'</td>');
$('#list_events').find('tbody').append('<td>'+item.Coordinator+'</td>');
$('#list_events').find('tbody').append('<td>'+item.Participant+'</td>');
$('#list_events').find('tbody').append('<td>'+item.Institute+'</td>');
$('#list_events').find('tbody').append('<td>'+item.Talk+'</td>');
});//end of each
//initializing DataTables
var table = $('#table_id').DataTable();
}//end of else (info found)
}//end of if success
}//end of post()
到目前为止,信息显示在 DataTables 中,但它并不完全有效,因为只显示信息。 DataTables 的搜索、下一个和上一个按钮以及结果数下拉菜单均未显示。
在 console.log 中出现以下错误:
未捕获的类型错误:无法读取未定义的属性“长度”
有什么想法吗?任何人都可以对此有所了解吗?
已解决
问题出在附加功能上。
如果我只键入一个仅带有 <tr> 的附加信息,如下所示:
$('#list_events').find('tbody').append('<tr>');
HTML中的结果是<tr></tr>,也就是说标签自动关闭了……无论如何。因此,解决方案是将 all 附加在 one 行中,如下所示:
$('#list_events').find('tbody').append('<tr><td>'+item.Event+'</td><td>'+item.Type+'</td><td>'+item.Attendance+'</td><td>'+item.Coordinator+'</td><td>'+item.Participant+'</td><td>'+item.Institute+'</td><td>'+item.Talk+'</td></tr>');
就是这样☺
【问题讨论】:
-
response.list_events未定义。我们不知道为什么,你还没有分享你的服务器端代码。 -
根据经验……不要使用 JSON.parse。在响应中设置正确的内容类型,让 jQuery 为您处理解析。
-
数据按预期显示在表格中。只是 DataTables 功能不起作用。我只看到带有数据的表格,但没有看到 DataTables 按钮,例如
search、filter、previous、next等。 -
你是对的。我不使用 JSON.parse 并且效果更好。
标签: javascript jquery datatable .post