为什么AJAX响应不是可排序的
我使用sorttable.js
进行表排序,我的表每3秒更新一次ajax响应,但响应不按照我预期的方式排序。
索引页面
Person Monthly pay Jan Molby £12,000 Steve Nicol £8,500 Steve McMahon £9,200 John Barnes £15,300 TOTAL £45,000
Append new table data
ajax响应是:
Person Monthly pay prabha Molby £12,000 abcd Nicol £8,500 steev McMahon £9,200 John Barnes £15,300 TOTAL £55,000
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响应进行排序它会被排序但是在另一个响应之后它再次改变它的顺序,但我希望它按前一个排序。
我想你应该已经阅读了sorttable.js常见问题所说的内容:
在加载页面时对表进行排序
很多人问,“如何在第一次加载页面时对表格进行排序?” 答案是:你没有。 Sorttable是关于在没有页面刷新的情况下更改从服务器提供的HTML。 当首次从服务器提供页面时,您必须等待它被提供服务。 因此,如果您希望在首次显示页面时对表进行排序,请按排序顺序提供表。 表通常来自数据库; 通过SQL中的ORDER BY子句以排序顺序从数据库中获取数据。 任何涉及您在页面加载时(即没有用户输入)运行排序表的解决方案都是错误的解决方案。
但他们也提出了一个解决方案 :
//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。 也许使用某种点击事件处理程序并存储最后点击的th。