2016-04-11 3 views
0

Я уже много читал здесь, но не могу найти рабочего решения! У меня есть datatable и внутри одного столбца есть кнопка редактирования. Если пользователь нажимает кнопку редактирования, появляется модальный текст, и пользователь может изменить запись из данных. После отправки формы изменения производятся внутри базы данных.dataTable - Обновить таблицу после формы submit

Теперь я хотел бы автоматически обновить свой стол и сделать перезагрузку страницы. Как я могу это достичь? Что мне нужно вызвать внутри моего сообщения о успехе?

Вот мой код:

index.php:

if ($savetodo=="true") { 
    $content=array("descr"=>$descr); 
    updateToDoInfo($id,$content); 

} 

AJAX представить:

   <script> 
        $(function() { 
         $('#form_edittodo').on(\"submit\", function(event) { 
          event.preventDefault(); 

          $.ajax({ 
           url: 'index.php', 
           type: 'post', 
           data: $(this).serialize(), 
           beforeSend: function(){ 
             $('#loading').show(); 
            }, 
            complete: function(){ 
             $('#loading').hide(); 
            }, 
           success: function() { 
            // What should I enter here? 
          }); 
         }); 
        }); 
       </script> 

DataTable:

<script> 
    $(document).ready(function() { 
     $('#todolist12').DataTable(); 
    }); 
    </script> 

Было бы здорово, если кто-то может помочь меня.

+0

Вы имеете в виду, что используете плагин jquery dataTables, когда говорите о «datatable»? – Adam

+0

да точно! извините забыл упомянуть об этом! –

+0

Просто перерисуйте свой datatable в своей успешной/полной функции как: $ ('# todolist12'). DataTable(). FnDraw(); –

ответ

1

Вам необходимо обновить ячейку, используя метод dataTables data().

Например, вы можете захотеть функция успеха выглядеть примерно так:

success: function() { 
    $('#todolist12').DataTable().cells("#idOfChangedCell").data("Update to cell"). 
} 

Для изменения на самом деле появляются на вашем сайте, но вы также должны вызвать в DataTables рисовать() метод:

$('#todolist12').DataTable().draw(); 
+0

Спасибо за помощь! Мой datatable создается динамически с записями из моей базы данных. Итак, что мне вводить вместо «#idofchangedCell»? Какие-либо предложения? –

+0

Это из моих рук, это было просто для того, чтобы показать вам структуру того, как работает заявление. Я не знаю, как построена ваша таблица, чтобы узнать, какой селектор вам нужен для поиска измененной ячейки. – Adam

0

Вы можете сделать location.reload(), чтобы перезагрузить страницу.

Если вы не хотите перезагружать страницу, вам необходимо сделать вашу таблицу загружаемой над ajax. Чтобы быть действительно гладким, вы могли бы загрузить одну строку.

Вы также можете вернуть новую строку в качестве ответа от вашего запроса на сохранение и просто обновить таблицу с помощью новой разметки.

Или вы можете использовать шаблоны javascript для визуализации данных на клиенте и возврата записи как json.

У вас есть много вариантов, но это зависит от вас, как разработчика, чтобы определить правильное решение. Существует не одна строка или несколько строк, которые позволят решить вашу проблему, отличную от location.reload(). Все зависит от того, как ваше приложение написано сейчас, или как вы его модифицируете, чтобы делать то, что вы хотите.

+0

Спасибо за ваш комментарий, но, честно говоря, это не очень помогает мне! Я знаю, что есть много вариантов, но, как я уже сказал, я хочу перезагрузить ТОЛЬКО мою таблицу, как только изменения будут внесены в базу данных. Поэтому я ищу решение или функцию для «успешной» части моего кода ajax! –