jac*_*lli 6 javascript ajax jquery datatables
我正在使用带有ajax源数据的jQuery DataTables.我必须每30秒保持数据最新而不刷新页面,ajax.reload()这是我需要的功能.
我把ajax.reload()一个setInterval功能放进去.
一切正常(如果你留在第1页).但是当你在第2页或第3页上冲浪时setInterval,什么时候被触发,它会让你回到第1页.
所以......在这个网址上找文档:http://datatables.net/reference/api/ajax.reload()
如果我将"false"作为第二个参数传递它保持当前的分页位置,并且在重新加载时不重置分页.答对了!
有用!但是......我有一个新问题,试图整天解决,现在我被卡住了.这就是我发布这个问题的原因.
它保持分页,但如果你不在第1页,那么每次ajax.reload()触发时,页面都会滚动(直接跳转)到底部.
它非常不友好,不可读,无法使用.我不知道为什么页面滚动到最后底部.
我发布了一个链接到我在页面上使用的简单数据表js. 的jsfiddle
var url = table.data('url');
var filterType = table.data('filtertype');
var options = {
"ajax": {
"url": url,
"type": "GET",
"data": function (d) {
d.contact_type = filterType
// this variable will set by server when page load. It should be "lead", "prospect", "client". Leave empty to get all.
}
},
"columns": [
{"data": "html_is_company"},
{"data": "name"},
{"data": "html_type_label"},
{"data": "created"},
{"data": "last_update"},
{"data": "html_actions"},
{"data": "tsu"},
{"data": "business_name"}
],
"bLengthChange": false,
"pageLength": 20,
"lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
"columnDefs": [
{
"targets": [ 7 ],
"visible": false,
"searchable": true,
},
{
"targets": [ 6, 7 ],
"searchable": false,
"visible": false
},
{
"targets": [0, 5],
"searchable": false,
"orderable": false
},
{
"targets": [ 4 ],
"render": function (data, type, row) {
return moment(data, IN_DATE_TIME_FORMAT, 'it').fromNow();//.format(DATE_TIME_FORMAT);////;
}
},
{
// Sort column 4 (formatted date) by column 6 (hidden seconds)
"orderData":[ 6 ],
"targets": [ 4 ]
}],
"order": [[4, "desc"]],
"search": "_INPUT_",
"language": {
"sSearchPlaceholder": "Cerca...",
"paginate": {
"previous": '<i class="icon wb-chevron-left-mini"></i>',
"next": '<i class="icon wb-chevron-right-mini"></i>'
},
//"url": "//cdn.datatables.net/plug-ins/1.10.9/i18n/Italian.json"
}
};
var datatable = table.DataTable(options);
this.setDataTable(datatable);
setInterval(function(){
datatable.ajax.reload(null, false);
}, 5000);
Run Code Online (Sandbox Code Playgroud)
我找到了一个适合我的解决方案。
问题在于数据表分页链接的“焦点”。
当用户单击链接页面时,它会将焦点设置在该链接上,并且当ajax.reload()触发时,浏览器会显示焦点元素所在的位置。我的表格是页面的最后一个元素,因此页面滚动到底部。
当我单击第 2 页链接后单击页面的另一个区域时,我得到了它。“跳跃”的问题消失了。
因此,我解决了blur()在 DataTables 完成初始化和ajax.reload()完成时触发 a 的问题(感谢允许您定义函数的第一个参数)。
在 DataTables 选项中我添加了以下内容:
"initComplete": function(settings, json) {
$(".paginate_button > a").on("focus", function(){
$(this).blur();
});
},
Run Code Online (Sandbox Code Playgroud)
然后,在setInterval:
setInterval(function(){
datatable.ajax.reload(function(){
$(".paginate_button > a").on("focus", function(){
$(this).blur();
});
}, false);
}, 30000);
Run Code Online (Sandbox Code Playgroud)
不知道这是否是“最佳解决方案”......但它有效并且可以帮助某人。
| 归档时间: |
|
| 查看次数: |
4067 次 |
| 最近记录: |