Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    335

    creare una select option con ajax e php

    Salve, avevo già scritto questa discussione ma forse il titolo era troppo generico, ci riprovo.
    Ho uno script PHP che legge da db due valori, base e altezza, questo estrae dei nomi di macchinari che possono lavorare con quelle misure.
    Nelle prove che faccio, tramite un alert leggo due macchine che possono lavorare con 50 x 70.
    lo script in php è il seguente :
    Codice PHP:
    public function tutti_macchinari(){
           
            
    $base    $_GET['base'];
            
    $altezza $_GET['altezza'];
                    
            
    $this->db->select('*');
            
    $this->db->from('macchine_stampa');
            
    $this->db->where('formato_base'$base);
            
    $this->db->where('formato_altezza'$altezza);
            
            
    $result $query $this->db->get()->result();
            
             
            if(
    $result){
               foreach (
    $result as $key)
               {
                   
    $data '<option value="'.$key->id_macchina.'">'.$key->descrizione.'</option>';
                   echo 
    $data
                }   
            
                   return;
            
            }

    Questo viene chiamato dalla funzione Ajax seguente :

    codice:
    function mix_macchine( $base, $altezza){
           
            
            
            $.ajax({
                type : "GET",
                url: "<?php echo site_url('app/tutti_macchinari');?>",
                data: "base=" + $base + "&altezza= " +$altezza ,
                cache: false,
                success  : function(result)
                    {
                        data = result;
                        
                          alert(data); // qui vedo le <option></option> corrette.
                        
                    $('#id_macchina').add(new Option( data) );
     
                     
                    },  error: function() { 
                            alert("Chiamata fallita, si prega di riprovare..."); 
                    }
                   
            });
              
        }
    Stranamente nella parte che deve popolare la select non c'e' mai nulla.
    codice HTML:
     
                     <select name="id_macchina" id="id_macchina" class="form-control"></select>
    due giorni di tentativi a vuoto, ricerche sul web inutili, sembrerebbe tutto regolare, ma non riesco mai a vedere la select popolata dai record.
    Potete darmi una dritta per continuare ?
    grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Questa istruzione che segue cosa dovrebbe fare?
    codice:
    new Option(data);
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    335
    Quote Originariamente inviata da alka Visualizza il messaggio
    Questa istruzione che segue cosa dovrebbe fare?
    codice:
    new Option(data);
    grazie per la risposta, dovrebbe creare le option , ho provato anche con .text(data) provato con .val(data)
    ma non cambia il risultato è sempre bianco candido!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    335
    ho provato anche a metterlo in questo modo

    $('#id_macchina').append(new Option( data) );
    stesso inutile risultato...

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Quote Originariamente inviata da marcopa Visualizza il messaggio
    dovrebbe creare le option
    Non sono sicuro che le <option> si creino in quel modo, usando direttamente quella funzione costruttore Option(), passando tra l'altro un testo che contiene le definizioni di più "option" e non solamente di una.

    Se si usa il DOM direttamente, la strada corretta è quella indicata in questa pagina, basata sull'uso della funzione createElement() (che va ripetuto tante volte quante sono le opzioni).

    Se dal server si scarica direttamente l'HTML già bell'e pronto, allora dovrebbe bastare questo:
    codice:
    $('#id_macchina').append($(data));
    dove l'uso della funzione JQuery con la stringa HTML scaricata crea gli elementi relativi alle <option> nuove, accodandole al contenuto della <select> che dovrebbe contenerle.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    335
    Quote Originariamente inviata da alka Visualizza il messaggio

    Se si usa il DOM direttamente, la strada corretta è quella indicata in questa pagina, basata sull'uso della funzione createElement() (che va ripetuto tante volte quante sono le opzioni).
    A volte mi sento stupido, non sono riuscito a trovare in rete risposte adeguate come hai fatto tu....

    grazie per l'aiuto.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Quote Originariamente inviata da marcopa Visualizza il messaggio
    non sono riuscito a trovare in rete risposte adeguate come hai fatto tu....
    Dato che fai uso di JQuery, secondo me è sufficiente che tu faccia riferimento alla sua documentazione ufficiale, verificando di volta in volta come ottenere un certo comportamento, quali sono i parametri effettivi da passare alle funzioni e visionando gli esempi.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.