服务器端模式下的数据表 1.10.18 和 jquery 3.2.1
设置如下:
var bySubstancesTable = $('#bySubstancesTable').DataTable({
processing: true,
serverSide: true,
searching: false,
ajax: {
data: {
list_requested: 'bySubstancesTable', // <table> #ID
keywords: $('#keywords-bysubstancestable').val() // search keywords
},
url: '/get-product-notifications.json',
},
"language": {
...
"processing": 'Loading notifications...'
}
...
});
页面的标记有一个<input>带 ID 的#keywords-bysubstancestable,后跟表的标记:
<input type="text" id="keywords-bysubstancestable">
<table id="bySubstancesTable" class="table display table-striped responsive" cellspacing="0" width="100%">
<thead>
<tr>
<th>Date</th>
<th>ID</th>
<th>Substance Name</th>
<th>Revision</th>
<th>Affected Products</th>
</tr>
</thead>
</table>
当页面加载时,表格被正确填充。我正在尝试实现自定义搜索功能,而不是使用与 DataTables 捆绑在一起的搜索功能。我以前问过这个问题:DataTables - 当一个新的请求开始时终止 ajax 请求,这是我工作的基础。
当我尝试重绘表格时 - 在用户输入#keywords-bysubstancestable输入后 - 像这样......
var debouncedDraw = _.debounce(function (opts) {
bySubstancesTable.draw();
return false;
}, 500);
...它正在向 ajax 发出请求,/get-product-notifications.json但keywords:即使我输入了输入,请求中的参数也是空的。
奇怪的是,如果我console.log($('#keywords-bysubstancestable').val())真的给出了价值。例如,如果我在输入中输入“Australia”,则console.log()语句给出:
但是当查看网络选项卡中的请求时,keywords:
即使发送了所有其他参数也是空的:
为什么会这样?
结果是表格显示了“正在加载通知...”文本,但表格中实际上没有任何变化。
我不明白这一点,因为我bySubstancesTable.draw();
从另一个似乎可以工作的项目中复制了它。我认为这.draw()
确实是重绘表格的正确方法?
沧海一幻觉
相关分类