Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    OnChange javascript lancia funzione PHP

    Partendo da una select vorrei che il valore selezionato venisse passato al php per fare una query e creare una nuova select.
    Un po' come quando scegli la regione e ti viene caricata la tendina con le province.
    Ho trovato esempi on line, ma non mi funzionano.
    I dati li ho su un db. Avete un esempio da suggerire?

    Utilizzo già questa funzione per abilitare e disabilitare degli input (#tipo è la mia select e #art la mia textbox, ma non capisco come adattarlo per far "partire" una query)
    codice:
    $('#tipo').change(function() {
        var v = $(this).val();
        if(v=='A'){
          $("#art").removeAttr("disabled");
        } else {
          $("#art").val(""); //serve se vuoi svuotare l'input di testo
          $("#art").attr("disabled", "disabled");
        }

  2. #2
    Devi usare ajax per generare l'html che ti serve

    codice:
    $('#tipo').change(function(){
       var v=$(this).val();
    
       $.ajax({
    	type: "POST",
    	url: "file_che_genera_le_options_o_la_select.php",
    	data: 'parametro='+v,
    	cache: false,
    	success: function(html){
    		//la variabile "html" conterrà l'echo del file php
                    $('qualcosa').html(html);
    	}
       });
    
    });

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Intanto grazie!
    ma qualcosa a "monte" non mi quadra.

    codice:
    <html><head><script type="text/javascript" src="js/jquery-3.2.1.js"></script>
    <script>
    $('#artista').change(function(){
       var v=$(this).val();
    
       $.ajax({
        type: "POST",
        url: "select_abitativa.php",
        data: 'parametro='+v,
        cache: false,
        success: function(html){
            //la variabile "html" conterrà l'echo del file php
                    $('qualcosa').html(html);
        }
       });
    
    });
    </script></head>
        <body><?php
        error_reporting(E_ALL);
         ini_set('display_errors', 1);
      
      
      include "conn/conndbmysql.php";
    
    
      if (!$result = $connessione->query("SELECT * FROM artisti ORDER BY nome")) {
      echo "Errore della query: " . $connessione->error . ".";
      exit();
    }else{
    	
    
      if($result->num_rows > 0) {
    echo "<select name='artista' id='artista'><option value=''>Seleziona artista</option>";
        while($row = $result->fetch_array(MYSQLI_ASSOC))
        {
     
    
    echo "<option value='". $row['idartista'] ."'>". $row['nome'] ."</option>";
       
        }
    
        $result->close();
      }
    echo "</select>";
      }
     
                    
       ?>  
    </body></html>
    la mia select viene caricata correttamente.
    E nel files select_abitativa.php ho messo semplicemente un
    echo "ciao";

    ---
    Ovviamente al cambio di opzione non mi viene "scritto" ciao da nessuna parte.
    Sonia

  4. #4
    Nella success function di $.ajax ricevi il responso

    codice:
        success: function(html){
            //la variabile "html" conterrà l'echo del file php
                    $('qualcosa').html(html);
        }
    E' da lì che lo potrai aggiungere al DOM

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    è questo che non capisco.
    codice:
    $('qualcosa').html(html);
    ho creato un DIV con id e name qualcosa, ma non ci viene stampato il mio echo.
    il .html(html) sta ad indicare che cosa?
    Grazie

  6. #6
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    è questo che non capisco.
    codice:
    $('qualcosa').html(html);
    ho creato un DIV con id e name qualcosa, ma non ci viene stampato il mio echo.
    il .html(html) sta ad indicare che cosa?
    Grazie
    La variabile "html" (parametro della success function di $.ajax) contiene il responso della chiamata ajax, al parametro puoi dare un nome a piacere, io l'ho chiamato "html" ma puoi chiamarlo come preferisci, nell'esempio di seguito l'ho nominato "responso".

    Il metodo html() di jQuery esegue un innerHTML, concetto abbastanza primitivo di cui dovresti essere a conoscenza.

    codice:
        success: function(responso){
           $('#id_dell_elemento').html(responso);
        }

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie ancora!
    Qualcosa non va!
    codice:
    <html>
        <head>
    <script type="text/javascript" src="js/jquery-3.2.1.js"></script>
    <script type="text/javascript">
    $('#artista').change(function(){
       var v=$(this).val();
    
       $.ajax({
        type: "POST",
        url: "select_abitativa.php",
        data: 'parametro='+v,
        cache: false,
    success: function(responso){
           $('#qualcosa').html(responso);
        }
    
    });
    </script>
    </head>
        <body>
    <select name='artista' id='artista'>
    <option value=''>Seleziona artista</option>
    <option value='39'>Nome1</option>
    <option value='38'>Nome2</option>
    </select>           
    
    
    <div id='qualcosa' name='qualcosa'></div>
        </body>
    </html>
    e il mio file php contiene semplicemente
    codice:
    <?php
    echo "ciao";
    ?>
    Ho cercato di semplificare il codice al massimo! Che sia un problema della mia libreria jquery-3.2.1.js?
    Poi nella mia pagina php recupero il parametro con un $_POST["data"]?
    Ri-grazie

  8. #8
    Il parametro lo invii tramite

    codice:
    data: 'parametro='+v,

    Quindi per recuperarlo, dovrai fare un $_POST['parametro']

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Continua a non funzionare!
    Ho fatto questa modifica inserendo un alert giusto per capire se li ci va!

    codice:
    $('#artista').change(function(){
       var v=$(this).val();
     alert("Hello!");
       $.ajax({
        type: "POST",
        url: "select_abitativa.php",
        data: 'parametro='+v,
        cache: false,
    success: function(responso){
           $('#qualcosa').html(responso);
        }
    
    });
    al change della mia select però non arriva l'alert!
    ho confrontato con la funzione che uso nell'altra pagina che è all'interno di un
    codice:
     $(document).ready(function(){ 
    ---
    }
    ho fatto anche quella prova ma non va nè l'alert nè nel mio div appare qualcosa.

  10. #10
    Errore mio
    Ultima modifica di paloppa; 08-03-2018 a 16:52

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.