Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202

    [AJAX] combo dinamica (problema con file XML)

    Ciao,

    Tramite Ajax ho popolato una combobox dopo la scelta di una prima combo, per capirci una volta scelta la regione, popolo la seconda combo con le province.

    In pratica una volta scelta la regione tramite ajax richiamo la pagina province.php che esegue una oppurtuna query e restituisce i valori tramite XML.

    Fin qui funziona tutto!!!

    Ora vorrei cercare di farmi restituire due valori dal file XML ma non riesco.
    In pratica vorrei mi restiusca oltre al valore relativo alla provincia, anche la regione, perchè quando vado alla pagina di raccolta dati mi passa come valore della regione il relativo ID.

    Ecco il codice che ho utilizzato:

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head><script src="/script/menu.js" type="text/javascript"></script>
    <title>Test AJAX</title>
    <script src="/script/oggettorequest.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
    function populateSubSelection(){
    //Recupero i dati da inviare
    var mainSelection = document.getElementById("mainSelection");

    //Creo un nuovo oggetto XMLHTTPRequest
    var req = newXMLHttpRequest();

    //Invio la richiesta
    req.open("POST", "modelli.php", true);
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    //Invio i dati POST
    req.send("choice=" + mainSelection.options[mainSelection.selectedIndex].value);

    //Gestore dell'evoluzione dello stato dell'oggetto req
    req.onreadystatechange = handleResponse(req, updateSubSelection);
    }

    function handleResponse(req, XMLHandler){
    return function(){

    if(req.readyState == 4){

    if (req.status == 200){

    XMLHandler(req.responseXML);
    }else{
    alert("Errore HTTP: " + req.status);
    }
    }
    }
    }

    function updateSubSelection(XMLResult){
    //Gestisco il documento XML ricevuto e popolo la seconda SELECT
    var categoria = XMLResult.getElementsByTagName('categoria');

    //Recupero la seconda SELECT
    var subSelection = document.getElementById("subSelection");

    //Svuoto la secondo SELECT
    for (var i = subSelection.length - 1; i >= 0; i--)
    subSelection.remove(i);

    //Scorro gli elementi
    for (var i = 0; i < categoria.length; i++){
    //Recupero i vari elementi singoli
    var item = categoria[i];

    //Creo il nuovo elemento OPTION da aggiungere nella seconda SELECT
    var NewOpt = document.createElement('option');
    var NewOpt1 = document.createElement('option');
    NewOpt.value = item.getAttribute("value");
    NewOpt.text = item.firstChild.nodeValue;
    NewOpt1.value = item.getAttribute("value");
    NewOpt1.text = item.firstChild.nodeValue;

    //Popolo la seconda SELECT
    try{
    subSelection.add(NewOpt, null); //Metodo Standard, non funziona con IE
    Marca1.add(NewOpt1, null);
    }catch(e){
    subSelection.add(NewOpt); // Funziona solo con IE
    Marca1.add(NewOpt1);
    }
    }
    }
    </script>
    </head>
    <body>
    Seleziona la REGIONE:
    <?php 
            $strsql 
    "select * from marca order by Marca"
            
    $query mysql_query($strsql);         
    ?>
    <form action="prova1.php" method="post">
    <select name="Marca" id="mainSelection" onchange="populateSubSelection()">
    <option value="">---</option>
    <?php while($row=mysql_fetch_array($query)){?>        
    <option value="<?php echo $row["Id_marca"];?>"><?php echo $row["Marca"];?></option>
    <?php }?>
    </select>
    SELEZIONA PROVINCIA:
    <select name="Modello" id="subSelection">
    <option value="">---</option>
    </select>
    <input type="hidden" name="Marca1" id="Marca1"  value=""/>
    <div id="Marca1">

    </div>
    <label>
    <input type="submit" name="Submit" value="Invia" />
    </label>
    </form>
    </body>
    </html>
    Questa è la pagina richiamata che genera il file XML:

    Codice PHP:
    header("Content-type: application/xml");
    header("Cache-control: no-cache, must-revalidate");
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    echo 
    "<categorie>\n";
    //Recupero la variabile sulla quale effettuare i vari controlli
    $myChoice = @$_POST['choice'];
    $strsql="select * from provincia where Id_regione=".NormDatiDB($myChoice,"INT");
    $query mysql_query($strsql);         

    while(
    $row=mysql_fetch_array($query)){    

    echo 
    "\t<categoria value=\"".$prova."\">".$prova."</categoria>\n";
    }
    echo 
    "</categorie>\n";
    Avete qualche aiuto prezioso da darmi?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202
    Nessuno riesce ad aiutarmi????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.