我为datatables v1.10.0编写了一个最小的服务器端处理脚本。服务器需要产品ID才能从数据库中获取记录,它从基于select2
插件的选择器选择中获取。 ajax调用始终传递由它首先发送的值,这种行为让人联想到缓存数据。
var table = $('#emails_table');
table.dataTable (
{
aoColumns: [
{
sClass: "center",
mRender: function (data)
{
if (data == '1')
{
return '<input name="row_check" type="checkbox" class="checkboxes" checked="checked" value="1">';
}
else if (data == '2')
{
return '<input name="row_check" type="checkbox" class="checkboxes" checked="" value="0">';
}
},
sWidth: '24px',
bAutoWidth: false,
bSortable: false },
{ bSortable: true },
{ bSortable: true },
{ bSortable: true },
{ bSortable: true }
],
pagelength: 10,
pagingType: "bootstrap_full_number",
language:
{
lengthMenu: " _MENU_ records",
paginate:
{
previous:"Prev",
next:"Next",
last:"Last",
first:"First"
}
},
aoColumnDefs : [
{
orderable : false,
aTargets : [0]
}],
order : [],
processing : true,
serverSide : true,
deferRender : true,
iDeferLoading : 0,
ajax :
{
type : "POST",
url : '<?php echo get_records_url(); ?>',
data : {product : $('#product_search option:selected').val()} // this doesn't get the latest value
}
});
$("#show_emails").click(function ()
{
table.dataTable().fnClearTable(0);
table.dataTable().fnDraw();
});
在根据较新的产品价值获取记录之前,按下该按钮。在show_emails
按钮中设置警报会显示不同选择的值更改,但ajax仍会发送第一个值。
我还尝试使用变量并在按钮的点击事件中刷新其值,但无济于事。请帮忙。
答案 0 :(得分:0)
我通过执行以下更改修复了问题;
ajax :
{
type : "POST",
url : '<?php echo site_url(); ?>',
data : function (d)
{
d.product = $('#product_search option:selected').val();
}
}
$("#show_emails").click(function ()
{
table.api().ajax.reload();
});