- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Form HTML con Ajax
-
Form HTML con Ajax
Salve a tutti!
sto facendo un form in html con campo regione e campo nazione.
Quando scelgo il primo campo, a seconda della scelta, mi viene popolato il secondo (è giusto così, con "regione" si intendono aree formate da + stati). Ho trovato il codice su internet e l'ho corretto un po' ma continua a non funzionare. Qualcuno sa trovare l'errore?
Premetto che non so niente di ajax/javascript...
Grazie mille!PAGINA DOVE E' CONTENUTO IL FORM:
[HTML]<script type="text/javascript" src="../js/zxml.js"></script>
<script type="text/javascript">
function getDati(eleTarg, regione){
alert ('ciao');
oXmlHttp = zXmlHttp.createRequest();
if (oXmlHttp)
{
var targ = document.getElementById(eleTarg);
oXmlHttp.open("GET", "getNaz.php?regione="+regione);
oXmlHttp.onreadystatechange = function()
{
if (oXmlHttp.readyState == 4 && oXmlHttp.status == 200)
{setNazione(targ, oXmlHttp.responseXML);}
}
oXmlHttp.send(null);
}
}
function setNazione(target, xmlDoc) {
var opzione = document.createElement('option');
var num = xmlDoc.documentElement.childNodes.length;
var elem = xmlDoc.documentElement;
var i;
deleteNazione(target);for (i = 0; i < num; i++) {
var testo = elem.getElementsByTagName("nome")*.childNodes[0].nodeValue;
var opzione = new Option(testo, testo);
target.options.add(opzione, -1);}
}
function deleteNazione(target) {
var i;
for (i=target.length-1; i>=0; i--) {
target.remove(i);
alert ('e tre');
}
}
</script><form id="reg" name="reg" method="post" action="registrazione_aut.php" style="margin:0;padding:0;" enctype="multipart/form-data">
<!-- apro il campo regione -->
<div style="text-align:left; float:left; vertical-align:top; width:200px; height:auto;">
Regione: <br /><select name="regione" onChange="getDati('nazione', document.reg.regione.value)">
<option value="" selected></option>
<?php
$query = "SELECT IDRegione, Regione".$_COOKIE[pathLingua]." FROM regioni ORDER BY IDRegione ASC";
$res = mysql_query($query, $conn);
$linea = mysql_fetch_array($res, MYSQL_ASSOC);
while ($linea) {
echo '<option value="'.$linea['IDRegione'].'">'.$linea['Regione'.$_COOKIE[pathLingua]].'</option>';
$linea = mysql_fetch_array($res, MYSQL_ASSOC);
}
mysql_close($conn);
?>
</select><br />
<!-- chiudo campo regione -->
</div><!-- apro il campo nazione -->
<div style="text-align:left; float:left; vertical-align:top; width:220px; height:auto;">
*Nazione:<br />
<select name="nazione" id="nazione">
</select>
<!-- chiudo campo nazione -->
</div></form>
[/HTML]E QUESTA E' LA PAGINA getNaz.php
[PHP]header("content-type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<nazione>';$query = 'SELECT IDNazione, Nazione'.$_COOKIE['pathLingua'].' FROM nazioni ORDER BY Nazione'.$_COOKIE['pathLingua'].' ASC WHERE P_Regione ="'.$_GET['regione'].'"';
$res = mysql_query($query, $conn);
$linea = mysql_fetch_array($res, MYSQL_ASSOC);
while ($linea) {
echo '<nome>'.$linea['Nazione'.$_COOKIE['pathLingua']].'</nome>';
$linea = mysql_fetch_array($res, MYSQL_ASSOC);
}
mysql_close($conn);echo '</nazione>';[/PHP]
-
Ciao liamuscogiuri,
hai già postato la stessa richiesta qui, e non è concesso dal regolamento:
11. ** Crossposting**
11.0. Non è consentito postare lo stesso messaggio o parti di esso in più aree del forum, salvo casi di particolare interesse che dovranno comunque essere autorizzati da un Admin.