На странице JS меняет данные (вопросы) при клике на кнопочки. Ajax не нужен, излишен. Все нужные данные требуется изначально загрузить на страницу, при ее отправке. Я могу в шаблоне (где на серверной стороне собирается страница, пишу на Go) создать JS переменную, в которую поместить, например, JSON со всем нужным или вообще в куки засунуть, но может есть какой более элегантный способ?
Если это не вопросы на задачи - все ок, куки, локалстораж, переменная, все зависит от стиля программирования и необходимости хранить межстраничные состояния.
1 ) Переменная если не требуется ничего сохранять.
2 ) Локалстораж для хранения до закрытия браузера.
3 ) куки если требуется запомнить что-либо надолго, на несколько посещений.
Если речь идет о каких-то конкурсных/экзаменационных вопросах - хранить их на стороне клиента не секурно.
Пишу в первую очередь с целью самообразования. Тест статичен (список вопросов не является тайной), грузиться полностью с сервера клиенту, далее за все отвечает JS, пока не придет пора узнать результаты, для этого идет запрос на сервер, возможно будет Ajax.
Если содержимое вопросов не должно меняться в зависимости от ответов на предыдущие, то статического списка в переменной в виде массива - будет достаточно.
Иначе - используйте ajax для формирования текстов последующих вопросов (на серверной стороне) на основе ответов на предыдущие.
Напомню, что выдача каждого последующего вопроса с сервера позволяет сохранить логику опроса в тайне от пользователя.