Как отключить сортировку, нажав на заголовок таблицы, когда данные на стороне сервера еще обрабатываются? - PullRequest
0 голосов
/ 21 октября 2010

Я делаю сортировку на стороне сервера в подключаемом модуле . Загрузка данных занимает 4-5 секунд, в то же время, если пользователь нажимает на другие заголовки, он снова запускает вызов AJAX.

Как я могу ограничить пользователя, когда данные на стороне сервера все еще находятся в состоянии обработки? Есть ли какая-нибудь начальная функция, где я могу проверить пользовательский статус флага и остановить сортировку до завершения обработки?

Ответы [ 4 ]

2 голосов
/ 21 октября 2010

При первом получении запроса отключите кнопку.Затем включите кнопку в функции обратного вызова, которая срабатывает после завершения работы сервера.Вот как ты это сделаешь, но если тебе нужен код, тогда дай код.

1 голос
/ 21 октября 2010

Просто быстрый совет:

  • набор async: false
  • отключить сортировку кнопок
  • включить их при успешном запросе
0 голосов
/ 21 октября 2010

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

$(document).ajaxSend( function(){
   $('controls_selector').hide();
}).ajaxComplete( function(){
   $('controls_selector').show();
});

Это будет сделано, однако это отключит их на время любого события ajax на вашей странице.,Документация описывает, как вы можете использовать параметры функции обратного вызова, чтобы определить природу вызова ajax и выборочно показать / скрыть эти элементы.

Таким образом, вы можете не копаться и не играть с кодом для плагина.

Обновление

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

var tableheadclone = $('#mytableid thead>tr>th').clone(true);

, затем написать этот клон в другом месте и спрятать его (или сохранить в глобальной переменной js).Затем вы можете использовать

$('#mytableid thead>tr>th').unbind('click');

для удаления обработчика событий.

Вы можете заново установить обработчик событий, используя функцию replaceWith() jQuery.

0 голосов
/ 21 октября 2010

Если память мне не изменяет, jquery имеет 3 функции, такие как ajaxStart(), ajaxError() и ajaxComplete().

Просто отключите всю сетку / только заголовок сетки при ajaxStart и включите его снова, когда либо ajaxError(где вы можете сделать некоторую обработку ошибок) или ajaxComplete.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...