Muf*_*lix 16 jquery datatables
我通过AJAX请求从数据库中获取表数据.我需要在AJAX请求中更改数据参数并刷新表.
我用命令刷新表
$('#table1').DataTable().ajax.reload();
Run Code Online (Sandbox Code Playgroud)
我有以下代码
$('#table1').DataTable({
/* SERVER SIDE PROCESSING */
"serverSide": true,
"ajax":
{
"url": "Home/Search",
"type": "POST",
"data": {
'searchType': GetSearchType(),
'searchText': GetSearchText()
//'searchType': $.mynamespace.searchType
//'searchText': $.mynamespace.searchText
//'searchType': localStorage.getItem("searchType"),
//'searchText': localStorage.getItem("searchText"),
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是在AJAX重新加载之后,将发送对服务器的原始请求,并忽略新的参数值.我尝试通过函数,全局变量和浏览器存储将数据传递给请求,但没有一种方法可行.在互联网上我找到解决方案
aoData.push()
Run Code Online (Sandbox Code Playgroud)
功能,但我不知道如何使用它.
我的jQuery DataTables版本是1.10.7.
我还尝试使用以下代码销毁并重新创建表:
$('#table1').DataTable({
"ajax":
{
"url": "Home/Search",
"type": "POST",
"data": {
'searchType': GetSearchType(),
'searchText': GetSearchText()
}
},
"destroy" : true
}).ajax.reload();
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息:
DataTables警告:table id = table1 - Ajax错误(http://www.datatables.net/manual/tech-notes/7)
参数字典包含非可空类型'System.Int32'的参数'draw'的空条目
Gyr*_*com 33
您可以将函数用作ajax.data选项的值,如下所示.
这样,每次客户端向服务器发出请求时都会运行代码,而不是像初始代码那样运行代码.
$('#table1').DataTable({
"serverSide": true,
"ajax": {
"url": "Home/Search",
"type": "POST",
"data": function(d){
d.searchType = GetSearchType();
d.searchText = GetSearchText();
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后$('#table1').DataTable().ajax.reload()在需要重新加载表格时使用,或者$('#table1').DataTable().ajax.reload(null, false)如果您不想重置当前页面.有关ajax.reload()更多信息,请参阅
小智 9
$('#table1').DataTable().ajax.url("?some_param=1&another=2").load();
Run Code Online (Sandbox Code Playgroud)
这是另一种解决方案。在默认数据表参数中添加您的参数。
好的,我找到了解决方案,在重新初始化表时,需要再次指定所有设置,否则它们将从默认值中获取。所以最终的代码是
$('#table1').DataTable({
"iDisplayStart": 0,
"iDisplayLength": 50,
"bPaginate": true,
"bSort": false,
"serverSide": true,
/* and all others settings others than default */
"ajax":
{
"url": "Home/Search",
"type": "POST",
"data": {
'searchType': GetSearchType(),
'searchText': GetSearchText()
}
},
"destroy" : true /* <---- this setting reinitialize the table */
}).
Run Code Online (Sandbox Code Playgroud)
但如果有人找到更好的解决方案,请分享。
| 归档时间: |
|
| 查看次数: |
28884 次 |
| 最近记录: |