Лично я бы, наверное, пошел с простотой в этом случае. Загрузите весь контент в начале загрузки страницы в скрытых div. Затем используйте jQuery, чтобы показать / скрыть каждую из страниц «анкеты»:
div#pageTwo {
display: none;
}
<div>
<div id="pageOne">
<p>Do you like the color blue?<p>
<p>What about green?</p>
<a href="#" onClick="gotoPageTwo();">Next Page</a>
</div>
<div id="pageTwo">
<p>...</p>
</div>
</div>
Где gotoPageTwo - это функция, которая использует jQuery для перехода между элементами div. Это может быть просто $("div#pageOne").hide()
и $("div#pageTwo").show()
или вы можете добавить несколько плавных анимированных переходов для слегка улучшенного пользовательского опыта (только не переусердствуйте, так как слишком много анимаций могут быстро отвлечь).
Затем вы также будете использовать jQuery, чтобы AJAX-вызовы возвращались на сервер через некоторый интервал (короче времени ожидания вашего сеанса), чтобы сделать простой запрос. Этот простой запрос в фоновом режиме гарантирует, что сеанс пользователя останется в живых.