Ajax.reload数据表中的变量值未更改

时间:2017-12-10 11:03:26

标签: javascript php jquery ajax datatable

我的代码中存在问题。我无法更改数据表中的year

此代码获取实际年份:

var yearDate = new Date();

var year = yearDate.getFullYear();

我的数据表方法:

$(document).ready(function() {

    januaryTable = $('#january').DataTable({ 

        "processing": true,
        "serverSide": true,
        "order": [],


        "ajax": {
            "url": "<?php echo site_url('gastos/ajax_list/')?>" + year+'-01-01' +'/'+ year+'-01-31',
            "type": "POST",

        },

        "columnDefs": [
            { 
                "targets": [ -1 ],
                "orderable": false,
            },
        ],

    });
}

此代码重新加载我的数据表

function reload_january_table()
{
    januaryTable.ajax.reload(null,false);

}

我使用select方法更改var year并调用函数reload_january_table(),但是例如,当我选择值2016时,表格不会从2016获取值,它保留2017值。

有人能帮助我吗?如果不好的话,抱歉我的英语。

1 个答案:

答案 0 :(得分:1)

问题是ajax.url仅在初始化表时被评估,因此年变量的第一个值被“烧”到网址。

解决方案是在年度值变化时设置DataTables的新网址:

dataTable.ajax.url('NEW_URL').load();

您可以在ajax.url()下找到DataTables文档的相关部分。

在您的特定情况下,您可以将year的新值作为参数传递到reload_january_table(year)函数调用中,并使该函数使用如下所示。

function reload_january_table(year) {
    var newUrl = "<?php echo site_url('gastos/ajax_list/')?>" + year  + '-01-01' + '/' + year + '-01-31';

    januaryTable.ajax.url(newUrl).load();
}