2016-08-20 73 views
0

我有一個jQuery datatable,象這樣定義一個Ajax數據源:編程jQuery的更新阿賈克斯數據的DataTable

var selected_ids = []; 

selected = $('#selected_members').dataTable({ 
    "ajax": { 
     'type': 'GET', 
     'url': "{!! route('admin.members.included_datatables') !!}", 
     'data': { 
      'member_ids' : JSON.stringify(selected_ids) 
     }, 
    }, 
    "processing": true, 
    "serverSide": true, 
    "columns": [ 
     null, 
     null, 
     null, 
     null, 
     null, 
     {"searchable": false, "orderable": false} 
    ] 
}); 

$('#available_members').on('click', '.select', function(e) { 
    e.preventDefault(); 

    member_id = $(this).data('member-id'); 
    selected_ids.push(member_id); 

    selected.api().ajax.reload(); 
}); 

正如你可以看到我手動更新selected_ids的內容,我想,然後再刷新數據表。這是行得通的,除了當數據表重新載入並且ajax調用它傳遞給服務器的member_ids參數仍然是空的。我是否必須在重新加載表之前手動更新ajax調用的數據屬性,如果有的話,我該怎麼做?

回答

0

我固定它我用於數據的封閉屬性代替像這樣:

selected = $('#selected_members').dataTable({ 
    "ajax": { 
     'type': 'GET', 
     'url': "{!! route('admin.members.included_datatables') !!}", 
     'data': function (d) { 
      d.member_ids = selected_ids; 
      return d; 
     } 
    }, 
    "processing": true, 
    "serverSide": true, 
    "columns": [ 
     null, 
     null, 
     null, 
     null, 
     null, 
     {"searchable": false, "orderable": false} 
    ] 
});