javascript - 在更改事件上加载 jQuery DataTable

标签 javascript jquery ajax datatables

我正在使用此脚本在准备就绪时加载数据表:

function renderDataTable(serviceUrl) 
{
  var $dataTable = $('#example1').DataTable({
    "ajax": serviceUrl,
    "iDisplayLength": 25,
    "order": [[2, "asc"]],
    "scrollY": 600,
    "scrollX": true,
    "bDestroy": true
   });
 });

这是ready事件:

 $(document).ready(function()
 {
   renderDataTable('api/service_teus.php');
 });

PHP 脚本如下所示:

 <?php
 $select = "SELECT SERVICE, SIZE_TYPE, TEUS FROM table";
 $query = mysqli_query($dbc, $select) or die(mysqli_error());

 $out = array();
 while($row = $query->fetch_assoc())
 {
   $out[] = $row;
 }
 echo json_encode($out);
 mysqli_free_result($query);
 ?>     

以上所有代码都可以正常工作。当页面准备好时,DataTable 会加载,并且 DataTable 会按照预期的方式工作。

我需要做的是,当在 ID 为 #serviceload 的下拉列表中选择新选项时,为用户创建重新加载数据表的功能。

因此我删除了 ready 事件。

现在,在 JavaScript 中,我创建一个 change 事件:

 $('#serviceload').change(function()
 {
   var page = $('#serviceload').val();  // user selection

   var $dataTable: $('#example1').DataTable({  // datatable
     "ajax": "api/service_teus.php", {page: page},  // here is where I think the problem lies
     "data": data,
     "iDisplayLength": 25,
     "order": [[2, "asc"]],
     "scrollY": 600,
     "scrollX": true,
     "bDestroy": true
   });
 });

我猜测错误很可能出在上面的 ajax 调用中。

我稍微修改一下 PHP 脚本,如下所示:

 <?php
 if($_POST['page'] == true)
 {
   $service = mysqli_real_escape_string($dbc, $_POST['page']);
   $select = "SELECT SERVICE, SIZE_TYPE, TEUS FROM table WHERE SERVICE - '$service'";
   $query = mysqli_query($dbc, $select) or die(mysqli_error());

   $out = array();
   while ($row = $query->fetch_assoc())
   {
     $out[] = $row;
   }
   echo json_encode($out);
   mysqli_free_result($query);
 }
 ?>

我不确定我是否在上面的 JavaScript 中正确使用了 AJAX 调用。

最佳答案

所以,经过两周的研究,我终于找到了解决我的问题的方法。

由于我已经有一个 HTML 下拉列表,因此在 READY 事件中,我添加了以下内容:

 var table = $('#example1').DataTable();
 $('#serviceload').on('change', function(){
   table.columns(1).search( this.value ).draw();
 });

我在这里找到的:http://jsfiddle.net/Ratan_Paul/5Lj6peof/1/

现在,当 CHANGE 事件被触发时,新数据将被填充,而不会将变量发送到服务器,这就是我在上面的初始代码中尝试做的事情。

关于javascript - 在更改事件上加载 jQuery DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36625733/

相关文章:

javascript - 谁能解释这段 Javascript 中发生了什么?

javascript - 加载内容时的图像

javascript - 在 ajax 成功中无法检测到来自 mysql 的 json_encode 结果

javascript - jQuery:遍历 Chrome/Safari 中的 AJAX 响应

javascript - ajaxSend 绑定(bind)然后 2 个异步 $.get 请求

javascript - javascript中的设置超时问题

javascript - 常见问题 - Accordion 展开/折叠功能

javascript - 如何使用 Jest 和 Enzyme 验证在 componentDidMount 中调用了 console.log?

javascript - Jquery:进入下一页时不应重置倒计时

javascript - 清除超时无法正常工作