本文详解如何在使用 datatables 的 `serverside: true` 模式时,正确将用户输入的搜索值(如文本框内容)通过 ajax 动态传入 mvc 控制器,避免因执行时机错误导致参数为 null 的常见问题。
在使用 DataTables 实现服务器端分页(serverSide: true)时,一个高频痛点是:无法将页面上动态输入的搜索条件(例如 )可靠地随每次 AJAX 请求一并提交到后端。你可能会发现:虽然 $(“#searchValue”).val() 在控制台打印出正确值,但控制器接收到的对应参数始终为 null。
根本原因在于:你当前的写法
data: {
'search_value': window.searchValue
}
是在 DataTables 初始化时一次性求值并固化的——此时 window.searchValue 还未被赋值(或仍为 undefined),后续修改该变量不会自动同步到 AJAX 请求中。即使你点击按钮更新了 window.searchValue,DataTables 并不会重新读取这个字段。
✅ 正确解法:使用 data 作为函数,确保每次发起 AJAX 请求前实时获取最新值: