Ho corretto, avevo provato a spostare questa parte di codice nel file .js delle funzioni, però ho visto che così non vede prototype. Facendo questa operazione ho copiato nel file .js anche la riga <script language.... e giustamente non gli piaceva!! Comunque ricapitolando, ho rimesso il blocco nel file dove risiede il form con gli altri elementi (leg_crit_ricerca.php):

<script type="text/javascript">
//funzione crit inserzionisti

function prepareSelect(idWrapper, filter)
{
new Ajax.Updater(idWrapper, 'leg_inserzionisti.php', {method : 'post', parameters : {filtra_inserzionista : filter}});
}

Event.observe(window, 'load', function(){
prepareSelect('div_inserzionista', '');
$('filtra_inserzionista').observe('click', function(){
prepareSelect('div_inserzionista', $('filtra_inserzionista').readAttribute('value'));
})
})
</script>

Se attribuisco direttamente un valore alla variabile $filtro_inserzionista anzichè ottenere il valore da $_POST['filtra_inserzionista'], esegue il filtro, altrimenti no. Credo che il problema sia nel valore del POST. idWrapper corrisponde al nome del div?