2016-12-30 2 views
0

送るのDataTableにAjaxのデータを追加します。 draw()前に私は、変数内のDataTableを初期化

$(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つだけデフォルト初期化されたデータであるリンゴ&バナナを取得POSTで飲み物を追加していないようです。私は何が欠けていますか?

答えて

2

the API.dataの方法は検索のみです。変数にデータを保持し、そのオブジェクトを更新してから.ajaxメソッドで使用してみてください。

var items = {} 

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

あなたが示唆したように、 '[]' '} {'よりべきではないのですか? '{} 'として宣言されているアイテムは' push'できません。 –

+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" />

関連する問題