#php #jquery #json #html-table
#php #jquery #json #html-таблица
Вопрос:
Я создал HTML-ТАБЛИЦУ из JSON-данных PHP с помощью jQuery. После создания таблицы я пытаюсь подключить сортировщик таблиц (jQuery), но это не работает. Как решить? Код ниже:
<script type="text/javascript">
$(document).ready(function() {
$.getJSON('listnotice.php', function(data) {
var table = "";
$.each(data, function(index,entry) {
table = '<tr>';
table = '<td>' entry["title"] '</td>';
table = '<td>' entry["content"] '</td>';
table = '<td>' entry["date"] '</td>';
table = '</tr>';
});
table = "</tbody>";
$("#noticeList").append(table);
});
$("#noticeList").tablesorter({debug: false, widgets: ['zebra'], sortList: [[0,0]]}).tablesorterFilter({filterContainer: $("#filter-box"),
filterClearContainer: $("#filter-clear-button"),
filterColumns: [0],
filterCaseSensitive: false});
});
</script>
</head>
<body>
<table id="noticeList">
<thead><tr><th>1</th><th>2</th><th>3</th></tr></thead><tbody>
</tablev>
</body>
</html>
Ответ №1:
Вам нужно применить tablesorter в том же обратном вызове, где вы создаете таблицу. Вызов getJSON является асинхронным, и в том виде, в каком он у вас есть сейчас, вы применяете tablesorter до того, как вызов вернется и таблица будет построена.
$.getJSON('listnotice.php', function(data) {
var table = "";
$.each(data, function(index,entry) {
table = '<tr>';
table = '<td>' entry["title"] '</td>';
table = '<td>' entry["content"] '</td>';
table = '<td>' entry["date"] '</td>';
table = '</tr>';
});
table = "</tbody>";
$("#noticeList").append(table)
.tablesorter({debug: false, widgets: ['zebra'], sortList [[0,0]]}).tablesorterFilter({filterContainer: $("#filter-box"),
filterClearContainer: $("#filter-clear-button"),
filterColumns: [0],
filterCaseSensitive: false});
});
Ответ №2:
Запрос ajax все равно будет выполняться при вызове .tablesorter()
плагина. Если вы переместите сортировщик таблиц внутрь вашего обработчика успеха, он должен работать.
Попробуйте это:
$(document).ready(function() {
$.getJSON('listnotice.php',
function(data) {
var table = "";
$.each(data, function(index,entry) {
table = '<tr>';
table = '<td>' entry["title"] '</td>';
table = '<td>' entry["content"] '</td>';
table = '<td>' entry["date"] '</td>';
table = '</tr>';
});
table = "</tbody>";
$("#noticeList").append(table).tablesorter({debug: false, widgets: ['zebra'], sortList: [[0,0]]}).tablesorterFilter({filterContainer: $("#filter-box"),
filterClearContainer: $("#filter-clear-button"),
filterColumns: [0],
filterCaseSensitive: false});
}
);
});