DataTable во всплывающем окне SweetAlert2 - PullRequest
0 голосов
/ 31 мая 2019

Возможно ли это или я трачу свое время?

Пробовал много вещей.

Прежде всего, у меня есть

$html = listings_swal()

, что составляет

function listings_Swal() {
    return '<table id="datatable"><thead><tr><th>Col1</th><th>Col2</th></tr></thead>
    <tfoot><tr><th>Col1</th><th>Col2</th></tr></tfoot></table>';

Это просто пустая таблица без содержимого.

Вот моя целевая ссылка для открытия диалога SweetAlert:

<a id="listings">Listings</a>

и мой скрипт:

  echo "<script>
$('#listings').on('click', function(){
  swal({
    title: 'Listings',
    html:'" . $html . "',
    showCancelButton: false,
  showConfirmButton: false,
  showCloseButton: true}, function() {
      $.ajax({
    url: 'listings.js',
    dataType: 'script'
      })
      .done(function(data) {
        swal('Deleted!', 'our file was successfully deleted!', 'success');
      })
      .error(function(data) {
        swal('Oops', 'We couldnt connect to the server!', 'error');
      });
    });
     });
</script>";

В моем listings.js файле

у меня есть стандартный Datatable init

$(document).ready(function() {
  $('#datatable').dataTable({
     .....

Я пробовал несколько вещей без успеха.

Такие какдобавление скрипта после диалога подсчета конфет

  echo "<script>
$('#listings').on('click', function(){
  swal({
    title: 'Table',
    html:'" . $html . "',
    showCancelButton: false,
  showConfirmButton: false,
  showCloseButton: true
  })
});
</script>";
echo '<script src="listings.js"></script>';

Я также пытался выполнить возврат php ajax в моем скрипте подсвечивания table.php, который только что имел echo '<script src="listings.js"></script>';

, который я пробовализменив мою функцию lists_Swal (), чтобы после закрытия </table><script src="listings.js"></script> был добавлен скрипт.

Это все работает нормально, если оно не находится во всплывающем окне диалога sweetalert2 - и диалог sweetalert действительно работает,но таблица не заполнена содержимым DataTable (просто показаны <table><thead> и <tfoot> снет строк таблицы, сгенерированных из DataTables.

Я уверен, что мои сценарии в остальном работают нормально и заполняют строки таблицы, если они не находятся в диалоговом окне sweetalert2 и просто в обычной html-таблице, поэтому я не совсем понимаю, какполучить DataTables, чтобы инициировать загрузку строк таблицы в самом всплывающем окне «сладкое» предупреждение.

Не уверен, что еще я могу попробовать.Это что-то с DOM, не распознающим таблицу для инициализации Datatable?У кого-нибудь есть идеи?

Спасибо!

edit: Чтобы уточнить, как я уже говорил, всплывающее окно sweetalert2 просто не заполняет его строками datatable и не содержит ошибок console / jsчтобы показать, поэтому я не уверен, как отлаживать.

1 Ответ

0 голосов
/ 01 июня 2019

Понял. Я думаю, что я должен был разделить два. Выполните команду SweetAlert (swal), а затем команду Datatable.

<script>
      $(document).ready(function(){
$('#listings').on('click', function(){
  Swal.fire({
    title: 'Listings',
    html: '<?php echo $html; ?>'
});
    $('#datatable').DataTable( {
    "processing": true,
    "serverSide": false,
    "ajax": "scripts/server_processing.php"
  } )
    });
});
</script>

Работает как положено!

...