[英]jQuery Datatables Server side pagination with custom HTTP POST request and response
[英]AJAX: jQuery DataTables (Server Side) not getting any request (GET or POST) data
我正在嘗試打印一個簡單的DataTables,當我在任何列(或頁面右上角的“整個表格”)上使用搜索/過濾器時,我想要更新它。 當我點擊列標題(進行排序)時,請求會通過(盡管頁面仍然無限期地說“處理”)。 當我在過濾器中輸入任何內容時,它會無限期地說“處理”,但沒有請求傳遞給服務器。
以下是腳本:
client.php
<!-- jQuery and DataTables JS files, including CSS, are included here -->
<table id="employee-table" class="table-striped">
<thead>
<tr>
<th>First</th>
<th>Last</th>
<th>DOB</th>
</tr>
<tr>
<th>First</th>
<th>Last</th>
<th>DOB</th>
</tr>
</thead>
</table>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#employee-table").dataTable({
processing: true,
serverSide: true,
ajax: {
url: "datatable.php",
type: 'POST'
}
}).columnFilter({
sPlaceHolder: "head:after",
aoColumns: [
{ type: "text" },
{ type: "text" },
{ type: "text" }
]
});
});
</script>
datatable.php
file_put_contents("debug.txt", $_REQUEST);
echo '{
"draw": 1,
"recordsTotal": 3,
"recordsFiltered": 3,
"data": [
[
"Angelica",
"Ramos",
"1986-01-01"
],
[
"Ashton",
"Cox",
"1987-01-01"
],
[
"Test",
"Third",
"1989-01-01"
]
]
}';
如您所見,我在服務器端腳本上所做的就是將所有請求的數據打印到文件中,以便我可以檢查它。 問題是,無論我在過濾器框中輸入什么內容,都沒有請求數據通過。 這是一個視覺:
這是debug.txt的輸出。 請注意,這是在client.php的初始加載時加載到文件中的內容,當您在任何搜索框中鍵入任何內容時,它不會更改:
Array
(
[draw] => 1
[columns] => Array
(
[0] => Array
(
[data] => 0
[name] =>
[searchable] => true
[orderable] => true
[search] => Array
(
[value] =>
[regex] => false
)
)
[1] => Array
(
[data] => 1
[name] =>
[searchable] => true
[orderable] => true
[search] => Array
(
[value] =>
[regex] => false
)
)
[2] => Array
(
[data] => 2
[name] =>
[searchable] => true
[orderable] => true
[search] => Array
(
[value] =>
[regex] => false
)
)
)
[order] => Array
(
[0] => Array
(
[column] => 0
[dir] => asc
)
)
[start] => 0
[length] => 10
[search] => Array
(
[value] =>
[regex] => false
)
)
我錯過了什么讓過濾器正常工作? 我假設我的客戶端DataTables JavaScript配置錯誤,但我不知道如何。 我的搜索似乎只是提取“遺留”DataTables解決方案,而不是他們擁有的簡化新版本。
任何幫助是極大的贊賞!
請嘗試以下方式:
client.php
$(document).ready(function() {
var oTable = $('#employee-table').dataTable({
"bJQueryUI": true,
"bProcessing": true,
"bServerSide": true,
"bRedraw": true,
"sAjaxSource": "datatable.php",
"aoColumns": [
{"mDataProp": "first"},
{"mDataProp": "last"},
{"mDataProp": "dob"},
],
"aaSorting": [[0, "asc"]]
});
});
datatable.php
請檢查以下鏈接,並在datatable提供的代碼中配置數據庫設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.