我有一個SQL表,其中36000個條目要顯示在Datatables列表中。 分頁效果很好,因爲我開發這樣的:jQuery Datatables:使用Ajax分頁搜索和過濾
var table = $('.datatable').DataTable({
pageLength : 20,
lengthChange : false,
processing : true,
serverSide : true,
ajax : {
url :"ajax.php",
type: "post",
}
});
在我的文件ajax.php,我只是附和我的臺詞(JSON編碼),根據頁碼設置的限制。
問題是本機過濾和搜索不再有效。 當我想過濾一列時,「處理」圖層出現,然後消失,但我的數據仍然是相同的。 當我想通過表進行研究時,沒有任何反應。
所以,這裏是我的問題:
- 我怎樣才能恢復搜索和過濾?
- 如何過濾和搜索所有行(不僅僅是顯示的行)?用Ajax,是的,但在JQuery中如何?
感謝的提前
編輯: 感謝對阿卜杜勒·拉赫曼·賽義德,我設法做搜索的一部分。 這裏是我做了什麼:
var table = $('.datatable').DataTable({
pageLength : 20,
lengthChange : false,
processing : true,
serverSide : true,
ajax : {
data : function(d) {
d.searching = get_search($('.datatable'));
},
url :"ajax.php",
type: "post",
},
searching : false,
});
$('.datatable thead th').each(function() {
var title = $(this).data('name');
$('.datatable').find('tfoot tr').append('<td><input type="text" name="'+title+'"/></td>');
});
table.columns().every(function() {
var that = this;
$('input', this.footer()).on('keyup', function(e) {
that.search(this.value).draw();
}
});
function get_search(datatable) {
var result = [];
datatable.find('tfoot').find('input').each(function() {
result.push([$(this).attr('name'), $(this).val()]);
});
return result;
}
用於過濾,我開發一個醜陋的代碼:
$('.datatable').find('th').click(function() {
var item = $(this);
removeClasses($('.datatable'), item.index());
if(item.hasClass('sorting_asc')) {
item.removeClass('selected_asc').addClass('selected_desc');
} else {
item.removeClass('selected_desc').addClass('selected_asc');
}
});
function get_sorting(datatable) {
var result = false;
datatable.find('th').each(function() {
var item = $(this);
var name = item.data('name');
if(item.hasClass('selected_asc')) {
result = name+' ASC';
} else if(item.hasClass('selected_desc')) {
result = name+' DESC';
} else {
// continue
}
});
return result;
}
function removeClasses(datatable, index) {
datatable.find('th').each(function() {
if($(this).index() !== index) {
$(this).removeClass().addClass('sorting');
}
});
}
您正在處理服務器端的分頁,您還需要處理服務器端的搜索和排序。當你進行搜索/排序請求時,你可以在查詢字符串中看到相關參數,請參閱[這裏](https://www.datatables.net/manual/server-side)獲取完整列表 – markpsmith
請你可以鏈接jsfiddle –