Поддерживать состояние просмотра после POST - PullRequest
2 голосов
/ 01 сентября 2010

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

Одна из вкладок, в частности, немного усложняется тем, что, если я выбираю конкретнуюопция данных, другие опции должны быть отключены.Однако из-за процедуры POST эти параметры снова включаются в представление, когда я возвращаюсь на вкладку.Текущее решение, которое я нашел для решения этой проблемы, состоит в том, чтобы проверить, была ли выбрана конкретная опция, и соответствующим образом отключить другие опции (что происходит, когда пользователь переходит на вкладку).Тем не менее, это кажется слишком большой работой.Мне интересно, есть ли какой-нибудь способ для отключенного атрибута остаться в различных опциях даже через POST.(Если ответ «Нет», я приму это, но я хотел посмотреть, есть ли другая альтернатива, обеспечивающая правильность представления для пользователя.)

Редактировать: Я хотел добавить код, демонстрирующий сообщение, которое я делаю, когда пользователь переключает вкладки.(В частности, на основе ответов.)

$.post($(form).attr("action"), $(form).serialize(), function (data, success) {
    if (success) {
        // Inject the resulting form back into the parent of the page.
        var parent = $(form).parent();
        parent.removeData($(form));
        parent.html(data);

        processTabAfterLoad(tab_index);
    }
});

Функция processTabAfterLoad делает все выборки и возвращает состояние вкладки в прежнее состояние.

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

На вашем месте я бы выбрал другой подход. Похоже, что ваша цель при отправке сообщений обратно на сервер - сохранить местоположение пользователя в приложении, чтобы при его возврате вы могли восстановить это состояние. Вместо того, чтобы перезагружать всю страницу через POST, вместо этого вы можете сделать пост "AJAX", чтобы сообщить серверу о сохранении местоположения пользовательского интерфейса пользователя, но выполнить всю вашу пользовательскую интерфейсную логику на стороне клиента. Таким образом, переходы пользовательского интерфейса не только будут выглядеть более плавными, но также уменьшат нагрузку на сервер и сделают приложение более отзывчивым.

Только тогда, когда пользователь выполнит начальный GET страницы, вам нужно будет найти последнее известное местоположение пользовательского интерфейса. Если для этого пользователя что-то хранится, вы должны добавить логику, чтобы установить начальное состояние пользовательского интерфейса при загрузке страницы.

Обновление:

На самом деле вы делаете пост AJAX, но вы, очевидно, также вставляете HTML-ответ этого поста в свой пользовательский интерфейс. Это несколько необычный шаблон (за исключением панелей обновления ASP.NET). Как правило, вы либо отправляете данные POST и не ожидаете никакого содержания в ответе, либо получаете data от поста, который вы примените к пользовательскому интерфейсу, а не получите его фрагмент.

Если вы привержены тому, как вы в настоящее время обрабатываете отправку форм, вы можете взглянуть на функцию jQuery live , которая может применять изменения к элементам, а также к вновь вставленным элементам, которые соответствуют критериям .

0 голосов
/ 01 сентября 2010

Вкладки - это обычно навигационные приемы.Имхо, это плохая практика для постбэка и перенаправления, когда будет делать GET (то есть обычная ссылка).GET сбрасывает viewstate обратно в известную точку, это небольшая полезная нагрузка, не требует жизненного цикла страницы, который в любом случае отбрасывается перед перенаправлением, и т. Д.

Я также могу быть совершенно не прав - яделаю предположения, так как не вижу кода.

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