【问题标题】:Paginator table not paging after Jquery ajax queryJquery ajax查询后分页器表不分页
【发布时间】:2015-10-19 14:24:48
【问题描述】:

我正在使用 Twitter Bootstrap,并且我有一个带有 paginator 的响应表。在加载页面中,分页工作,但在更新主体表中的行和数据的 Jquery Ajax 事件之后,表不分页。

表格:

<table id="tblFaltas" class="table table-striped table-bordered">
    <thead id="theadFaltas">
        <tr class="header">
            <th rowspan="2">
                Name
            </th>
        </tr>
        <tr id="lnDia">
            <th>
            </th>                           
        </tr>
        </thead>
        <tbody id="tBodyFaltas">
            <tr>
                <td>
                     <center>
                      No data
                     </center>
               </td>
               <td>
                    <center>
                    No data
                    </center>
              </td>
          </tr>
      </tbody>
</table>

还有一个调用Jquery ajax函数的选择按钮。

带有事件onChange的按钮:

<select class="form-control" id="day" onChange="selectDay()">
    <option>         
    </option>
</select>

函数selectDay()

function selectDay() {

   $.ajax({
      type: 'POST',
      data: JSON.stringify(data),
      cache: false,
      contentType: 'application/json',
      datatype: "json",
      url: '/home/getdays',
      success: function (returns) {
      $('#tBodyFaltas').empty();
          $('#tBodyFaltas').append($tr); // UPDATE THE BODY TABLE HERE
      }
   });
   $('#tblFaltas').dataTable(); // Call the dataTable pagintator
};

我的疑问是:$('#tblFaltas').dataTable(); 是这样工作的?

【问题讨论】:

    标签: javascript jquery html twitter-bootstrap datatables


    【解决方案1】:

    您必须在插入新项目后完全重新初始化数据表:

    function selectDay() {
      $.ajax({
         type: 'POST',
         data: JSON.stringify(data),
         cache: false,
         contentType: 'application/json',
         datatype: "json",
         url: '/home/getdays',
         success: function (returns) {
            $('#tBodyFaltas').empty();
            $('#tBodyFaltas').append($tr); // UPDATE THE BODY TABLE HERE
            $('#tblFaltas').dataTable({
               destroy : true
            });
          }
       });
    }
    

    destroy 选项可让您重新初始化现有的 dataTable 实例(如果有)而不会发生冲突。

    【讨论】:

    • 感谢@davidkonrad,但是当我输入$('#tblFaltas').dataTable({ destroy : true }); 时,表格没有分页,并且在控制台中显示c[b][f] is undefined
    • @LucasCosta - 您的回复如何,即returns?我想知道你有一个 JSON 响应,但只是添加到 #tBodyFaltas,因为它是 &lt;tr&gt;...&lt;/tr&gt; 标记......?请展示returns 的示例...也许有更好的方法。
    • @LucasCosta - 谢谢!这不是正确的标记。您需要一些行定义,&lt;tr&gt;...&lt;/tr&gt; 为每一行.ie &lt;tr&gt;\&lt;td &gt;\&lt;center&gt;\Sem dados\&lt;/center&gt;\&lt;/td&gt;\&lt;td &gt;\&lt;center&gt;\Sem dados\&lt;/center&gt;\&lt;/td&gt;\&lt;/tr&gt;&lt;/tr&gt;&lt;td &gt;\&lt;center&gt;\.... 浏览器是宽容的,但 dataTables 需要正确的标记才能运行。你有机会解决这个问题吗?否则可以在插入之前对响应进行消毒 - 我试一试。
    • 嘿@LucasCosta - 这是一个带有更正标题等的示例,可让您将格式错误的标记插入数据表 -> jsfiddle.net/zcdzz8so 但您应该 真的尝试获得正确的响应,即从服务器返回正确的标记 - 或者考虑实际将 JSON 传回。以上是一个肮脏的hack,只是为了演示您如何可以将数据插入dataTables。
    • @davidkonrar,你是对的,这是一个例子,我的真实表更复杂(rowspan,colspan)并且有很多列生成动态,我遇到了问题,但我在列标题中工作...非常感谢 =]
    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2017-11-28
    • 2011-09-18
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多