为什么AJAX响应不是可排序的

时间:2014-06-24 12:17:44

标签: javascript jquery ajax sorttable.js

我正在使用sorttable.js进行表格排序,我的表格每3秒更新一次ajax响应,但响应的排序方式并不像我预期的那样。

索引页

 <div id="resDiv">
            <table id="myTable1" class="sortable">
            <thead>
                <tr><th id="person">Person</th><th id="monpay">Monthly pay</th></tr>
            </thead>
            <tbody>
                <tr><td>Jan Molby</td><td>£12,000</td></tr>
                <tr><td>Steve Nicol</td><td>£8,500</td></tr>
                <tr><td>Steve McMahon</td><td>£9,200</td></tr>
                <tr><td>John Barnes</td><td>£15,300</td></tr>
            </tbody>
            <tfoot>
                <tr><td>TOTAL</td><td>£45,000</td></tr>
            </tfoot>
        </table>
        </div>
         <a href="#" id="ajax-append">Append new table data</a>

ajax响应是:

<table id="myTable" class="sortable">
    <thead>
        <tr><th>Person</th><th>Monthly pay</th></tr>
    </thead>
    <tbody>
        <tr><td>prabha Molby</td><td>£12,000</td></tr>
        <tr><td>abcd Nicol</td><td>£8,500</td></tr>
        <tr><td>steev McMahon</td><td>£9,200</td></tr>
        <tr><td>John Barnes</td><td>£15,300</td></tr>
    </tbody>
    <tfoot>
        <tr><td>TOTAL</td><td>£55,000</td></tr>
    </tfoot>
</table>

的JavaScript

 $(function() {

                $("#ajax-append").click(function() {
                    setInterval(function() {
                    var request = $.get("assets/replacecontent.jsp", function(html) {
                        alert(html);
                        $('#resDiv').html(html);
                        var newTableObject = document.getElementById("myTable");
                        alert(newTableObject);
                        sorttable.makeSortable(newTableObject);

//                        alert($("#myTable").length);

                    });
                }, 3000);

                });
            });

现在,如果有时间我对ajax响应进行排序,它会被排序但是在另一个响应之后它会再次改变它的顺序,但我希望它按照前一个顺序排序。

1 个答案:

答案 0 :(得分:1)

我认为你应该已经阅读了sorttable.js常见问题所说的内容:

  

在加载页面时对表格进行排序

     

很多人都会问,“我如何将排序表排在第一位   页面加载的时间?“答案是:你没有。排序表是关于   在没有页面的情况下更改从服务器提供的HTML   刷新。首次从服务器提供页面时,您必须这样做   无论如何都要等待它的服务。所以,如果你想要这张桌子   在首次显示页面时排序,以排序方式提供表格   订购。表通常来自数据库;从中获取数据   数据库按排序顺序在SQL中使用ORDER BY子句。任何   解决方案,它涉及您一旦页面运行sorttable   加载(即没有用户输入)是一个错误的解决方案。

但他们也说了solution for that

//Find the TH you want to use, maybe you can store that using an event handler before
var myTH = document.getElementsByTagName("th")[0];
//Then sort it
sorttable.innerSortFunction.apply(myTH, []);

但是,您必须找到用户之前点击的列,并且说实话我没有找到任何方式直接使用sorttable api。也许使用某种点击事件处理程序并存储最后点击的那个。