вариантов несколько.
1) либо таки загрузить весь контент, но в ужатой форме по максимуму, с ренднерингом потом самих селектов на стороне клиента в двух вариантах:
1.1) по мере продвижения вглубь менять наполнение у селектов
1.2) сгенерить все варианты, и упхать их в невидимые дивы.
2) грузить постепенно и поэтапно. через ифрейм или фрейм. причём вовсе не обязательно дожидаться момента, когда информация понадобится. можно подгруживать маленькими порциями на фоне.
3) 5 фреймов, при переходе - догружается фрейм. инфа о выборе селекта передаётся в родительский, собирается в хидденах и в конце отправляется.
в первых вариантах понадобится многомерный массив. типа
Код:
<script>
var data={
"a":{
"a.a":{
"a.a.a":{
"a.a.a.a":{
"a.a.a.a.a":"finaly the value of fifth select - a.a.a.a.a",
"a.a.a.a.b":"finaly - a.a.a.a.b",
"a.a.a.a.c":"finaly - a.a.a.a.c",
"a.a.a.a.d":"finaly - a.a.a.a.d",
"a.a.a.a.e":"finaly - a.a.a.a.e"
},"a.a.a.b":{
"a.a.a.b.a":"finaly - a.a.a.b.a",
"a.a.a.b.b":"finaly - a.a.a.b.b",
"a.a.a.b.c":"finaly - a.a.a.b.c",
"a.a.a.b.d":"finaly - a.a.a.b.d",
"a.a.a.b.e":"finaly - a.a.a.b.e"
}
}
}
}
}
alert(data["a"]["a.a"]["a.a.a"]["a.a.a.a"]["a.a.a.a.a"]);
</script>
но это ой как муторно. не рекомендую.
проще через подгруз. хотя всё равно придётся лепить некую структуру на клиенте.