Se non vuoi un aggiornamento della pagina, la risposta è "JavaScript". Ora, hai un paio di opzioni lì. Personalmente, preferisco caricare di più in anticipo, quindi tengo un oggetto JSON che delinea le possibilità e quindi scambio il contenuto statico con il contenuto statico.
Ciò significherebbe che al cambio avrei qualcosa del tipo:
var first = document.getElementById( "id of first select" )
var items = possibilities[
first.value // you can also do things with selectedIndex and options if needs.
];
var second = document.getElementById( "id of second select" )
for( var i in items )
{
var opt = document.createElement('option');
opt.setAttribute('value', items[ it ] );
second.appendChild( opt );
}
L'altra opzione è inviare i dati "via cavo" e farlo funzionare tramite AJAX. Non avendo spazio per un tutorial, penso di poterti tranquillamente collegare a questo .