Salve,
ho un problema con uno script js, utilizzando il framework mootools 1.2.1 .
Lo script richiede ad una pagina php collegata a un database Province, Comuni, Frazioni, in tempo reale selezionando in cascata le suddette e caricando quindi le option risultanti dalla query all'interno della select. Ad esempio, selezionando una provincia, verranno restituiti tutti i comuni della stessa, selezionando quindi un comune le relative frazioni.
Il tutto funziona egregiamente con Firefox, Safari, ma con IE il response dalla pagina PHP risulta vuoto.
Il codice HTML comprendente il javascript:
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<script language="javascript" type="text/javascript" src="framework/mootools-1.2.1.js"></script>
<script language="javascript" type="text/javascript">
window.addEvent('domready', function() {
$('provincia').addEvent('change', function() {
var log = $('comune').empty();
$('form_1').action='comu_fetch.php';
$('form_1').set('send', {
onComplete: function(response) {
response='<option>Comuni: </option>'+response;
log.set('html', response);
//log.adopt(new Element('div').set('html', '<select>' + response + '</select>').getFirst().getChildren());
log = $('frazione').empty();
}
});
$('form_1').send();
});
$('comune').addEvent('change', function() {
var log = $('frazione').empty();
$('form_1').action='fraz_fetch.php';
$('form_1').set('send', {onComplete: function(response) {
if (!response=='') { response='<option>Frazioni: </option>'+response; }
else response='<option>Nessuna Frazione</option>'+response;
log.set('html', response);
}});
$('form_1').send();
});
});
</script>
</head>
<body>
<form method="post" action="comu_fetch.php" id="form_1">
<dl>
<dt><label for="provincia">Provincia:</label></dt>
<dd>
<select id="provincia" name="provincia">
<option>Province: </option>
<option>Arezzo</option>
<option>Carrara</option>
<option>Firenze</option>
<option>Grosseto</option>
<option>Livorno</option>
<option>Lucca</option>
<option>Massa</option>
<option>Pisa</option>
<option>Pistoia</option>
<option>Prato</option>
<option>Siena</option>
</select>
</dd>
</dl>
<dl>
<dt><label for="comune">Comune:</label></dt>
<dd>
<select id="comune" name="comune">
<option>...</option>
</select>
</dd>
</dl>
<dl>
<dt><label for="frazione">Frazione:</label></dt>
<dd>
<select id="frazione" name="frazione">
<option>...</option>
</select>
</dd>
</dl>
</form>
</body>
</html>
E lo script PHP che genera l'output:
Codice PHP:
<?php
include("db/config.inc.php");
$db = @mysql_connect($db_host,$db_usr,$db_psw) or die("Impossibile connettersi al Database.");
mysql_select_db($db_name,$db);
$post = strtoupper($_POST['provincia']);
$ris = mysql_query("Select prov_cap From tab_cap Where comu_cap = '$post' AND fraz_cap = ''");
$ftc = mysql_fetch_array($ris);
$com = $ftc[0];
mysql_free_result($ris);
$ris = mysql_query("Select comu_cap From tab_cap Where prov_cap='$com' AND fraz_cap='' AND topo_cap='' Order By comu_cap ASC");
mysql_close($db);
while ( $row = mysql_fetch_array($ris, MYSQL_ASSOC) )
{
$x = ucfirst(strtolower($row['comu_cap']));
printf ("<option>%s</option>\n", $x );
}
// Sembra che IE non prenda il contenuto dell'output generato dal fetching.
// Mentre se faccio un "echo" esternamente ad esempio:
// echo "Hello World"; --> venga letto nel response a differenza di quanto scritto sopra.
mysql_free_result($ris);
?>
Attendo una vostra risposta.
Per ogni chiarimento non esitate a chiedere.
Posso anche inserire una pagina demo se è necessario.