SweetAlert2弹出窗口中的数据表

时间:2019-05-31 19:21:03

标签: jquery database datatables sweetalert2

这可能还是我在浪费时间?

尝试了很多事情。

首先我拥有

$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文件中

我有标准的数据表初始化

$(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>';

我也尝试过在我的Sweetalert脚本table.php中执行php ajax返回,该脚本只有一个echo '<script src="listings.js"></script>';

我试图修改我的listings_Swal()函数,以便在结束</table><script src="listings.js"></script>之后添加脚本。

如果不在sweetalert2对话框弹出窗口中,这一切都很好---并且sweetalert对话框确实有效,但是该表未填充DataTable内容(它只是显示<table><thead><tfoot>,没有从DataTable生成的表行。

我确信我的脚本可以正常工作,并且如果表行不在sweetalert2对话框和普通html表中,则可以填充它们,因此我对如何获取DataTables来初始化表行的加载感到困惑在甜蜜警报弹出窗口中。

不确定我还能尝试什么。 DOM无法识别用于初始化数据表的表吗?有人有什么想法吗?

谢谢!

编辑:澄清一下,正如我说的,sweetalert2对话框确实会弹出,只是没有用数据表的行填充它,并且没有显示console / js错误,所以我不确定如何调试。

1 个答案:

答案 0 :(得分:0)

知道了。我想我必须将两者分开。依次执行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>

按预期工作!