AJAX调用没有传递服务器端处理的最新值

时间:2014-07-23 11:06:45

标签: jquery ajax jquery-datatables

我为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仍会发送第一个值。

我还尝试使用变量并在按钮的点击事件中刷新其值,但无济于事。请帮忙。

1 个答案:

答案 0 :(得分:0)

我通过执行以下更改修复了问题;

AJAX Call

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();
});