2016-12-30 54 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" />