javascript - 即使存在,DataTables 也不会读取输入的值
问题描述
服务器端模式下的 DataTables 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()
语句给出:
但是当在 Network 选项卡中查看请求时,keywords:
即使发送了所有其他参数,也是空的:
为什么会这样?
效果是表格显示“正在加载通知...”文本,但表格中实际上没有任何变化。
我不明白这一点,因为我bySubstancesTable.draw();
从另一个似乎可以工作的项目中复制了它。我认为这.draw()
确实是重绘表格的正确方法?
解决方案
您正在读取值并将值分配给keywords
,而不是expression
本身,因此您的关键字始终是静态的,即初始化表时获得的值。
数据表支持function
作为值ajax.data
,它应该接受数据对象并返回修改后的数据对象。
var bySubstancesTable = $('#bySubstancesTable').DataTable({
processing: true,
serverSide: true,
searching: false,
ajax: {
data: function (d) {
d.list_requested = 'bySubstancesTable'; // <table> #ID
d.keywords = $('#keywords-bysubstancestable').val(); // search keywords
return d;
},
url: '/get-product-notifications.json',
},
"language": {
...
"processing": 'Loading notifications...'
}
...
});
推荐阅读
- .net - 第一个连字符后的字符串的子字符串,包括后的连字符
- netlogo - Netlogo 排序变量
- c# - 如何使用正则表达式在 RGB 中查找两个连续的重复字符?
- javascript - If 语句中的甜蜜警报
- arrays - API 设计:未记录的对象键与对象数组
- ios - Swift 和 Objc 互操作性 - 可用性不仅仅在 objc 中起作用
- c# - 嵌套的 Try/Catch 块
- c++ - Boost.Test 的数据测试用例真的需要 C++11 吗?
- javascript - 我有这个表格,但我无法通过验证
- d3.js - D3 - 如何将“x”坐标“rect”值的开始设置为“x”轴上的匹配时间/日期