Сортировщик таблицы Jquery не может сортировать определенные столбцы после вызова ajax

Я борюсь с этим:

  1. У меня есть таблица HTML, который я сортирую с помощью jquery TableSorter.
  2. Я извлекаю всю таблицу с помощью ajax из php-скрипта при нажатии кнопки «Поиск».
  3. У меня есть опции поиска, которые передаются в php-код, когда нажата кнопка «Поиск».
  4. После завершения нового поиска я удаляю всю таблицу и добавляю новую таблицу в документ.
  5. Я вызываю TableSorter после поиска и добавления.
  6. Некоторые данные в столбце, который я пытаюсь отсортировать, просто: «-» помечают неназванные, а некоторые являются названиями компаний.

Проблема:

  1. когда все параметры поиска являются значениями по умолчанию, что означает, что все строки извлекаются, tableorter работает прекрасно. Если я приведу одну опцию поиска, независимо от того, что это, таблица сортировщика не сможет отсортировать определенные столбцы.
  2. Параметры поиска влияют только на то, какие строки извлекаются в таблицу, и ничего больше.
  3. Что делает это странным, так это тот факт, что в моем локальном тестировании WAMP-сервер работает нормально каждый раз, но на удаленном сервере он работает следующим образом.
  4. Еще более странным является тот факт, что если я выберу более одной опции поиска, она снова заработает.
  5. «-» -марки не оказывают негативного влияния на сортировку.
  6. Всего три колонки начинают действовать таким образом, и все они имеют только текстовые данные.
  7. Колонны не все рядом друг с другом.
  8. Другие столбцы, содержащие текст, числа или еще что-то, работают нормально.

Код для получения таблицы:

$.ajax({
url:"includes/getfromdb.php",
type: "POST",
data: $("#usersearchform").serialize(),
success:function(result){
$("#custresults").empty(); // container for the results
$("#custresults").append(result);
$("#customertable").tablesorter();
},
error: function(err) {
alert(err);
}
});

Тот факт, что это работает на моем WAMP-сервере, а не в конечном месте кода, на удаленном сервере, может означать, что есть какая-то проблема конфигурации или что-то подобное ..? Или что ты думаешь ТАК?

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

Обновление 17.9.14-08.16
Подробнее Сгенерированная php таблица без данных, только структура:

<div id="custresults" class="results">

<table id="customertable" class="tablesorter">
<thead>
<tr class="nohower">
<th class="smalltd header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
<th class="header"></th>
</tr>
</thead>
<tbody></tbody>
</table>

</div>

Конечно, в теле есть больше. tr: s и td: s. Нормальная структура там.
Я уже пытался запустить обновление, но оно не работает для меня. Я думаю, это потому, что вся таблица удаляется, а затем создается снова, а не просто обновляет ее.

1

Решение

Хорошо, я только что понял это.

Данные, которые находятся на сервере, имеют в некоторых столбцах знак «-» как первый элемент в этом столбце. Сортировщик таблиц видит это как минус или что-то в этом роде, потому что отладчик идентифицирует этот столбец как цифры и поэтому не может отсортировать столбец, в котором есть текст. Глупо, что я раньше не замечал этого на отладчике.
Спасибо за использование вашего времени с этим.

Обновить: Я ничего не сделал для самого сортировщика таблиц, но вместо этого избавился от символов «-», которые существовали в данных, так как это был только недостаток дизайна с моей стороны, и я мог легко изменять входящие данные.

1

Другие решения

Я мог бы предоставить лучшую помощь, если бы вы могли поделиться некоторыми из полученных HTML.

От догадки я бы заподозрил, что #custresults это идентификатор tbody, Так что если вы заменяете только содержимое tbodyВы не должны повторно инициализировать TableSorter. Вместо этого запустите событие обновления:

// initialize tablesorter outside of the ajax
$("#customertable").tablesorter();

$.ajax({
url:"includes/getfromdb.php",
type: "POST",
data: $("#usersearchform").serialize(),
success:function(result){
$("#custresults").empty(); // container for the results
$("#custresults").append(result);
// update tablesorter cache
$("#customertable").trigger('update');
},
error: function(err) {
alert(err);
}
});
0

По вопросам рекламы [email protected]