2016-08-15 2 views
0

Я пытаюсь настроить свой Datatable на POST на содержимое его строк в свой PHP-скрипт, чтобы я мог хранить его в базе данных.Datatable.js + POSTing data PHP

У меня есть рабочая HTML-страница, которая, когда я нажимаю «+ Добавить сопоставление», появляется BS-модаль, и я могу добавить строку в datatable.

<script> 
    $(document).ready(function() { 
     var t = $('#parameters_config').DataTable(); 
     $('#add_new_mapping').on('click', function() { 
      $('#add_field_mapping').modal('hide'); 
      var wb_field = $("#add_field_mapping #wb_field").val(); 
      var adobe_field = $("#add_field_mapping #adobe_field").val(); 
      t.row.add([ 
       adobe_field, 
       wb_field, 
      ]).draw(); 
      $('#add_new_field_mapping').trigger("reset"); 
     }); 
    }); 
</script> 

Все это работает отлично. Теперь я хотел бы получить все строки данных и POST их к моему сценарию, чтобы я мог обрабатывать представленные данные и хранить их. До сих пор, я придумал на основе информации, это обеспечило:

<script> 
      $(document).ready(function() { 
       $('#parameters').submit(function(event) {     
        var table = $('#parameters_config').DataTable(); 
        var dataToSend = table 
        .rows() 
        .data(); 
        console.log('Data', dataToSend); 
        alert('There are '+dataToSend.length+' row(s) of data in this table'); 
        $.ajax({ 
        type: 'POST', 
        url: '{$this->homeURL}', 
        data: dataToSend, 
        dataType: 'json', 
        }); 
       }); 
      }); 
     </script> 

В моем окне консоли я вижу следующее вернулся на «dataToSend», но без каких-либо фактических данных!

[Array [2], контекст: Array [1], селектор: Object, Аякс: Object]

Где я буду неправильно?

+0

Что такое '$ this', должно быть, здесь? – tadman

+0

$ this-> homeURL ссылается на переменную в моем PHP-коде, она настроена на что-то вроде https://secure.workbooks.com. Это URL-адрес текущего скрипта. –

+0

Правильно, но что он делает в середине файла JavaScript? – tadman

ответ

0

Где примеры заладились

Два примера вы связаны в вашем посте на самом деле не связаны с тем, что вы пытаетесь сделать (от того, что я могу собрать о своей цели).

Первый пример - о том, как получить данные с сервера с помощью POST вместо GET по умолчанию и не имеет ничего общего с , отправляющим данные на сервер с какой-либо целью.

Второй пример об обработке на стороне сервера, который является, где у вас есть нумерация страниц, упорядочение, сортировка, фильтрация, и все другие DataTables функции, обрабатываемые в собственном коде сервера, где вы затем отправить результаты клиенту (который довольно сложно и, если у вас нет большого количества строк, ненужно).

Поэтому снимите serverSide: true!

Ваша цель

То, что вы на самом деле хотите сделать (я думаю), посылают свои данные в PHP скрипт, так что вы можете сделать что-то с ним. Это не обрабатывается никаким вызовом API DataTables, а является довольно простой функцией для реализации. Все, что вам действительно нужно, это функция, которая сделает вызов AJAX, который отправит данные в скрипт.

Решение

, как вы можете сделать это путем получения данных с t.data()API call, а затем отправить его с помощью Ajax запроса. Это может выглядеть следующим образом:

function sendData(){ 
    var dataToSend = t.data(); 
    $.ajax({ 
     type: 'POST', 
     url: 'URL OF SCRIPT HERE', 
     data: dataToSend 
    }); 
} 

Тогда вы просто должны вызвать sendData() всякий раз, когда это то, что вы хотите отправить данные. Конечно, вам нужно будет убедиться, что ваш контроллер правильно обрабатывает данные, но это совсем другое дело.

+0

Спасибо за ваш ответ ... Я обновил свой вопрос на основе вашего ответа. Тем не менее, мне все еще не удаётся получить фактические данные, мне удалось получить количество строк, но никаких фактических данных ... помочь! –

+0

@JamieLowe Что содержится в dataToSend (попробуйте пройти, чтобы узнать) и что отправлено в JSON (используйте инструменты dev или скрипт для просмотра содержимого JSON)? –