在完整函数中更改发送到ajax调用的数据的值

时间:2017-08-17 19:21:44

标签: javascript ajax datatable

我需要在完整函数上更改发送到ajax调用的数据。

假设我在ajax调用开始之后设置了var total = 1;

function test(total) {
    total = total;
    alert("total : " + total);
}
$('#call_analysis_basic_table').DataTable( {
    "processing": true,
    "serverSide": true,
    "iDisplayLength": 100,
    "ajax":{
        type: "POST",
        url :"http://localhost:8050/phpservice/index.php", // json datasource
        data: {
            "rec" : total,
            "phone" : "d123",
            "from_date" : "14-05-2016" ,
            "to_date" : "20-09-2017"
        },
        error: function(){  
            alert("error");
        },
        complete: function(data){  
            total = data.responseJSON.recordsTotal;
            test(total);
        }
    }
} );

第一次参数rec的值为1,最后我在完整函数中更改了total的值(假设现在总值为20)。 但是当我点击表格的第2页时,ajax调用开始了,它再次将rec的值发送到1,而不是发送20? 为什么会发生这种情况,我在完整函数中更改参数的值但仍在下一个ajax调用中,它获取参数的旧值?

1 个答案:

答案 0 :(得分:2)

data值可以是一个函数,它将被调用以返回发送给服务器的数据:

data: function(d) {
    return $.extend({}, d, {
        "rec" : total,
        "phone" : "d123",
        "from_date" : "14-05-2016" ,
        "to_date" : "20-09-2017"
    };
},

这将使用total的更新值。

请参阅ajax.data documentation