Сессии PHP против jQuery show () / hide () - PullRequest
0 голосов
/ 09 марта 2010

Я работаю с процессом покупки. Процесс состоит из 4 шагов. Первые два шага - это то, где мы берем все данные о клиентах. 3-й шаг отправляет данные на наши серверы с AJAX, а затем показывает форму оплаты. После оплаты клиент получает благодарность на шаге 4.

Мой вопрос касается шага 1 и шага 2. Сейчас все эти шаги находятся на одной странице. У меня есть одна форма, разделенная на две <div>. На первом шаге второй div скрыт (css: {display:none;}), и когда клиент переходит на шаг 2, первый div скрывается с помощью jQuery hide(), а второй div показывается с помощью jQuery show().

Моя проблема в том, что я хочу, чтобы клиент мог вернуться к шагу 1 с помощью кнопки «назад» в веб-браузере, которая, очевидно, сейчас не работает. Есть ли какие-то чистые решения JavaScript для этого? Мы будем требовать от наших пользователей активировать JS в любом случае. Или лучше начать использовать сеансы? Сайт основан на PHP.

Посмотрим, найдется ли кто-нибудь, кто понимает мои мысли и проблемы ..

Ответы [ 3 ]

1 голос
/ 09 марта 2010

Изменение фрагмента URL (бит после #) создает запись в истории браузера. Многие веб-приложения используют это, чтобы делать то, что вы описываете. Взгляните на jQuery BBQ плагин (демо здесь ).

1 голос
/ 09 марта 2010

Ajax и кнопка возврата обычно не очень хорошо играют вместе. Вам нужно просто предоставить ссылку, которая возьмет «назад». Но возникнут ли у вас проблемы, если вы снова отправите первую форму? Будете ли вы получать дополнительные или осиротевшие записи?

0 голосов
/ 09 марта 2010

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

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

Но если вы можете определить сроки и не возражаете рискнуть, это будет изящный трюк.

...