Почему ответ AJAX не в сортируемой манере

Я использую 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 ответ

Я думаю, что вы должны были прочитать то, что говорит faq sorttable.js:

Сортировка таблицы при загрузке страницы

Многие люди спрашивают: "Как сделать сортируемую сортировку таблицы при первой загрузке страницы?" Ответ таков: нет. Сортировка - это изменение HTML-кода, который подается с вашего сервера без обновления страницы. Когда страница впервые подается с сервера, вам все равно придется ждать, пока она не будет обработана. Итак, если вы хотите, чтобы таблица сортировалась при первом отображении страницы, обслуживайте таблицу в отсортированном порядке. Таблицы часто выходят из базы данных; получить данные из базы данных в отсортированном порядке с помощью предложения ORDER BY в вашем SQL. Любое решение, которое включает в себя запуск sorttable сразу после загрузки страницы (т. Е. Без ввода данных пользователем), является неправильным решением.

Но они также заявляют решение для этого:

//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, []);

Но для этого вам нужно будет найти столбец, по которому щелкнул ваш пользователь ранее, и, честно говоря, я не нашел способа напрямую использовать API для сортировки. Может быть, использовать какой-то обработчик события щелчка и сохранить тот, который был нажат последним.

Другие вопросы по тегам