как предотвратить взаимодействие пользователей при ожидании ответа ajax

Сценарий похож: я использую JQuery для реализования некоторых ajax опций. Например: когда пользователь нажимает кнопку, "получают данные", JQuery вызовет функцию .ajax для выборки некоторых данных из сервера. Этот процесс мог бы занять время, таким образом, я добавил .ajaxSend и функции .ajaxComplete для показа некоторой анимации для ожидающего процесса (на самом деле 'Загружающиеся Данные' gif в отделении с z-индексом: 999, чтобы быть вершиной других отделений в). Во время ожидающего процесса ('Загружающиеся Данные'), я хотел бы предотвратить пользователей для нажатия других кнопок (например: у Меня есть другие вкладки, кнопки ниже маленьких 'Данных Загрузки' gif). Путем я достиг, это:

    $("body").ajaxSend(function()
     {
        $(this).append('<div id="loading">Data Loading<\/div>');
        $("div#error").remove();
        $(this).children().not('#loading').css({'opacity':0.22});   
     });
    $("body").ajaxComplete(function()
     {
        $("div#loading").remove();
        $(this).children().not('#loading').css({'opacity':1});
     });

Однако я не думаю, изменяя непрозрачность, лучший способ. Если Вы не делаете непрозрачность к 0, пользователи могут все еще нажать на другие кнопки/вкладки. Я не знаю, как полностью избежать какого-либо взаимодействия с пользователем во время этого процесса?Спасибо!!

7
задан WilliamLou 2 February 2010 в 19:28
поделиться

5 ответов

Используйте наложение.

http://jqueryui.com/demos/dialog/#modal

5
ответ дан 6 December 2019 в 11:49
поделиться

Я использовал jQuery Block UI с хорошим успехом в прошлом. Хорошо работает с Ajax:

http://malsup.com/jquery/block/

может стоить использовать такое плагин, как это, вместо того, чтобы Handcoding подобное решение ...

6
ответ дан 6 December 2019 в 11:49
поделиться

Сделать видимый div с z-индексом выше всего другого. OnSucess, скрыть это.

Для IE6 рассмотрим видимость выбора входов

5
ответ дан 6 December 2019 в 11:49
поделиться

Я использую вариант трубопроводов AJAX Ben Nadel . По сути, он оборачивает звонок jQuery $ .ajax с объектом, который может записывать исходящие запросы AJAX.

Когда запрос AJAX выходит, вы записываете имя запроса. Если какие-либо еще запросы пытаются выйти с тем же именем, вы не выполняете его (необязательно предоставление сообщения пользователю).

0
ответ дан 6 December 2019 в 11:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: