Avevo lo stesso problema, ma online non ho trovato nulla che facesse al caso mio (o mi sono scocciato subito di cercare) ed ho elaborato un sistema.
Ho fatto la select1 così:
<select onchange="mostra_selectt2( this[this.selectedIndex].value);">
Poi in un .js esterno ho messo questo codice javascript
codice:
function mostra_select2(id) {
// istanzio l'xmlhttprequest
var http = createObject();
// cancello tutto ciò che c'è nella select2
var asd = document.getElementById('select2');
while (asd.options.length > 0)
asd.options[0]=null;
http.open('get', 'mostraricette.php?id='+id);
http.onreadystatechange = function() {
if(http.readyState == 4){
var response = http.responseText;
eval(response);
}
}
http.send(null);
}
Il file mostraricette.php mi crea un output di questo tipo (che in realtà è codice js):
codice:
objSelect = document.getElementById('select2');
objSelect.options[0] = new Option('Seleziona una ricetta','0');
objSelect.options[1] = new Option('valore1','1');
objSelect.options[2] = new Option('valore2','2');
objSelect.options.selectedIndex = 0;
Il codice creato tramite php, viene dato in pasto alla funzione "eval()" di javascript che mi popola la seconda select.