2016-12-30 56 views
0

我初始化的变量数据表:添加对数据表AJAX数据之前发送

var dataTable = $("#selector").DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax: $.fn.dataTable.pipeline({ 
     dataType: "json", 
     url: "/path/ajaxurl", 
     data: { 
      "fruits": "apple", 
      "veggies": "banana", 
     }, 
     dataSrc: "data" 
    }), 
    sPaginationType: "extStyle" 
}); 

现在,某个地方在我的剧本我有这个复选框,改变将增加Ajax的新的数据之上时再初始化draw()

$(document).on("change", "#add-some-liquors", function(e) { 
    // some validations here 

    // My attempt to add this data 
    dataTable.data({"drinks" : "coca-cola"}); 

    // Draw the dataTables 
    dataTable.clearPipeline().draw(); 
}); 

似乎dataTable.data({"drinks" : "coca-cola"});不添加帖子上的饮料,当​​我在后台检查,我只得到了苹果&香蕉这是两个默认初始化的数据。我错过了什么?

回答

2

根据the API.data方法仅用于检索。尝试在变量中保存数据,更新该对象,然后在.ajax方法中使用它。

var items = {} 

ajax: $.fn.dataTable.pipeline({ 
    dataType: "json", 
    url: "/path/ajaxurl", 
    data: items, 
+0

它不应该'[]'不是'{}'如你所说?似乎我不能对项目执行“推”操作,如果它被声明为“{}”? –

+0

是推是阵列。对于您只需设置键和值的对象。这里应该没有关系,你正在使用。 –

+0

我尝试重新创建数据到'var testVar = [{“fruits”:“apple”,“veggies”:“banana”}];'然后将它放到'data:testVar' ..现在我不再看到后端... –

1

声明你的数据作为变量,并在以后添加的饮料价值。

var data = { 
 
      "fruits": "apple", 
 
      "veggies": "banana", 
 
     }; 
 

 
console.log(data); 
 

 
//On the click event 
 
$('#chk').on('click', function() { 
 
    if ($(this).is(':checked')) { 
 
    data['drinks'] = 'coca-cola'; 
 
    } else { 
 
    //When unchecking the option, set it's value to null 
 
    data['drinks'] = null; 
 

 
    //Or delete the property. 
 
    //delete data['drinks']; 
 
    } 
 

 
    console.log(data); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="chk" />