javascript - jquery DataTable 搜索和排序不起作用

标签 javascript jquery ajax html datatable

我在数据表排序和过滤方面遇到问题,基本上所有 JS 函数都不起作用。 我已经包含了 JS 文件。 一些细节: 我正在连接到数据库以检索 json 中的数据。 php 文件:('district.php')

    <?php  
  include_once('db.php');
  $db = mysql_select_db('mor_app',$con);  
  if(!$db){   die('Database selection failed '.mysql_error());  }   
  $sql = 'SELECT *FROM users';  
  $result = mysql_query($sql,$con);   
  $data = array();
  while($row = mysql_fetch_array($result)){
  $row_data = array(  
  'id' => $row['id'],    
  'date' => $row['date'],   
  'username' => $row['username'], 
  'Q1' => $row['Q1']    );  
  array_push($data, $row_data);  } 
  echo json_encode($data); 
  ?>

html文件:

<!DOCTYPE html>
<html>
    <head>
    <!-- DataTables CSS -->
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.0/css/jquery.dataTables.css">
    <!-- DataTables -->
    <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.0/js/jquery.dataTables.js"></script>
 <script src="js/jquery-1.9.1.min.js"></script>
    </head>
    <body>
 <table id="table_id" class="display">  
 <caption>Try</caption>  
 <thead> <tr>  
 <th>ID</th>  
 <th>Date</th>  
 <th>user name</th>   
 <th>Q1</th> </tr>
 </thead>   
 <tbody id="tablebody"> 
 </tbody>
 </table>


       <script>

        $(function() {

  var url = 'district.php';    
  $.getJSON(url, function(data) {     
  $.each(data, function(index, data) {     
  $('#tablebody').append('<tr>');      
  $('#tablebody').append('<td>'+data.id+'</td>');    
  $('#tablebody').append('<td>'+data.date+'</td>');  
  $('#tablebody').append('<td>'+data.username+'</td>');   
  $('#tablebody').append('<td>'+data.Q1+'</td>');    
  $('#tablebody').append('</tr>');    
  });   
  });

 });

      $('#table_id').DataTable();  


    </script>


  </body>
    </html>

现在我可以看到表格,但我无法排序或搜索。 如果我在搜索框中写了一些东西,表格是空的。排序也会发生同样的情况。 它说:表中没有可用数据。 我认为它正在发生,因为我正在检索数据。有什么建议吗? 非常感谢,摩尔

最佳答案

我发现的问题是,您必须使用 DataTable 的 fnAddData 函数在您的 HTML 表格中添加数据。否则,它不会添加正在动态获取的数据。我用 HTML 中的硬编码数据进行了测试,效果很好,但每当我尝试通过 AJAX 从其他来源获取数据时,它都会显示“未找到数据”或其他内容。

我在 another stack overflow question 中找到了解决方案.

我为您的解决方案使用了 AJAX,但主要问题是使用 fnAddData

这是工作正常的解决方案(从上面的链接获得帮助):

<script>
$('#table_id').DataTable();
                $(document).ready(function() {

                    $.ajax({
                            type: "POST",
                            url: "district.php",
                            data: {data : ""},
                            cache: false,
                            success: function(result){
                                  data = JSON.parse(result);    
                                  $.each(data, function(index, data) {     
                                  //!!!--Here is the main catch------>fnAddData
                                  $('#table_id').dataTable().fnAddData( [
                                                                          data.id,
                                                                          data.date,
                                                                          data.username,
                                                                          data.Q1 ]
                                                                        );      

                                });

                            }

                    });

                });

    </script>

重要提示:我的回答认为您的 PHP 代码正在正确返回数据。我按照评论中的建议制作了一些虚拟数组。我的 php 文件返回如下:

  $data = array(); 
  $row_data = array( 'id' => 1, 'date' => "2014-01-01", 'username' => "mou", 'Q1' => "muhahaha" ); 
  array_push($data, $row_data);   

  $row_data = array( 'id' => 9, 'date' => "2013-02-02", 'username' => "sadi", 'Q1' => "hii" ); 
  array_push($data, $row_data);   

  echo json_encode($data);

关于javascript - jquery DataTable 搜索和排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24581217/

相关文章:

javascript - 类似于生成空差异图像的js

javascript - 如何在移动 View css 中相互交换 div

javascript - 向下和向上滚动时运行一次动画

javascript - 使用 jQuery 和 AJAX 更新 SQL 时出现问题

javascript - 如何在 javascript 中捕获 php session 变量而不刷新页面?

javascript - 为什么 Dropdown Selected 值作为空值传递给 jQuery 中的 Controller

javascript - 按 date_time 值开始选择/过滤 JSON

javascript - 使用 img onclick 更改显示属性以阻止

javascript - 返回页面中所有 iframe 的 ID

jquery - 如何使用 window.location.hash 添加偏移量