Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    [AJAX] Aggiungere campi dinamicamente

    ciao gente.
    sto costruendo una paginetta con un pò di ajax.

    l'utente genera dei campi che vicino hanno degli input text.
    usando ajax riesco a fare quasi tutto, solo che se l'utente AGGIUNGE altri campi, usando un semplice innerHTML, i campi del form si resettano.

    ho pensato di usare allora l'aggiunta coi DOM, creando nella pagina php che elabora i risultati, invece di un valore secco, una stringa javascript che crea i figli e dovrebbe inserirli al punto giusto.

    solo che se uso innerHTML per visualizzare il "responseText" o document.write, mi visualizza la stringa invece che la formattazione!


    codice:
    ajax.js
    function stateChanged()	{ 
    	if (xmlHttp.readyState==4 || xmlHttp.readyState == "complete"){ 
    	//	iH = document.getElementById("nomi_generati").innerHTML;
    			//document.getElementById("nomi_generati").innerHTML = xmlHttp.responseText;
    			document.write(xmlHttp.responseText) ;
    		} 
    	//	iH = document.getElementById("nomi_generati").innerHTML; 
    }
    le righe commentate erano la versione precedente, quella che appendeva il contenuto con innerHTML, ma che si perdeva i valori degli input field.

    Codice PHP:
    pagina server
        $Otabella 
    "var col = document.createElement(\"TD\"); 
                col.setAttribute('style', 'width: 50%'); 
                col.setAttribute('valign','center');
                col.innerHTML = "
    .($nome)."-".($cognome)."
                
                var riga = document.createElement(\"TR\");
                
                var hid = document.createElement(\"INPUT\");
                hid.setAttribute('type','hidden');
                hid.setAttribute('name','hid_nome_
    $n');
                hid.value = "
    .($nome)."-".($cognome).";
                
                var inp = document.createElement(\"INPUT\");
                inp.setAttribute('type','hidden');
                inp.setAttribute('name','nome_
    $n');
                inp.setAttribute('class','piccolo');
                
                col.AppendChild(hid);
                col.AppendChild(inp);
                col.innerHTML = [img]immagini/salva_nome.png[/img];
                
                riga.AppendChild(col);
                
                document.getElementById('nomi_generati').AppendChild(riga);        
                "
    ;
                
        echo 
    $Otabella
    così pensavo di appendere al tbody chiato "nomi_generati" le righe che creo.
    solo che non mi si visualizzano loro, ma il codice!

    ciao e grazie.

  2. #2
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    rettifica:

    aggiungendo EVAL() ora non compare piu il testo.

    solo che compare solo:
    [object HTMLTableRowElement]
    come mai?

    EDIT:
    ho provato anche ad aggiunguere:

    codice:
    var tbody = document.getElementById('nomi_generati').getElementsByTagName(\"TBODY\")[0];
    inserendo nella tabella in cui vorrei andare ad aggiungere le righe i tag <tbody>
    solo che così addirittura mi da "tbody is undefined".

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.