Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 43
  1. #1
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246

    [Ajax] Recuperare valori da funzione per aggiornare db

    Ciao a tutti,
    sto utilizzando un piccolo script in Jquery per editare una tabella senza dover ricaricare la pagina.

    Questa è la parte html:

    codice:
            <table width="100%" border="0" id="daeditare">
              <tr class="intestazione">
                <td colspan="2">dati registrazione</td>
              </tr>
            <tr>
                <td class="testo" width="50%">Indirizzo email <span class="text-red">(*)</span></td>
                <td class="testo" width="50%"><span class="edit" id="email"><%= strEmail %></span></td>
              </tr>
              <tr>
                <td class="testo"></td>
                <td></td>
              </tr>
              <tr>
                <td class="testo">Nome <span class="text-red">(*)</span></td>
                <td class="testo"><span class="edit" id="nome"><%= strNome %></span></td>
              </tr>
              <tr>
                <td class="testo">Cognome <span class="text-red">(*)</span></td>
                <td class="testo"><span class="edit" id="cognome"><%= strCognome %></span></td>
              </tr>
    </table>
    sempre nella stessa pagina della tabella in html ho:

    codice:
    <script type="text/javascript" src="js/tableEdit.js"></script>
    <script type="text/javascript">
    $(document).ready(function (){
    
    $.tableEdit({
    
    	 tabella: "daeditare", // id della tabella sulla quale applicare il plugin
    	 indirizzo: "test.asp", // url dello script lato server
    	 classe: "sopra", // classe per gestire gli hover sugli .edit
    	 form: "modifica", // id della form creata dinamicamente
    	 invio: "inviadati", // id del bottone di invio
    	 resetta: "azzera" // id del bottone per il reset
    	
    	});
    
    });
    </script>
    Quello che non riesco a capire è come recuperare tutti i dati passati alla pagina test.asp, nella quale poi metterò il salvataggio dei dati su db.

    Al momento ho:

    codice:
    nome = Trim(Request("name"))
    response.write nome
    In questo modo il plugin funziona nel suo effetto editabile, ma ovviamente non aggiorna i dati.
    Addentrandomi nello script ho capito che la variabile "nome" è (dovrebbe essere?) una stringa che racchiude tutti i campi di tutto il form, ma come li splitto? recupero?
    Vi ringrazio tanto per l'aiuto,
    Elisa
    L'immaginazione è l'intelligenza che si diverte

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Un link ad una pagina pubblica c'è? E la chiama ajax quale sarebbe secondo te?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246
    Originariamente inviato da cavicchiandrea
    Un link ad una pagina pubblica c'è? E la chiama ajax quale sarebbe secondo te?
    chiedo scusa, ho omesso la parte più importante

    codice:
    (function($){
     $.tableEdit = function(parametri){
       
      
        // dichiaro le variabili configurabili durante l'attivazione
    
        var idTabella = '#'+parametri.tabella;
    	var scriptUrl = parametri.indirizzo;
    	var classeHover = parametri.classe;
    	var idForm = parametri.form;
    	var idInvio = parametri.invio;
    	var idResetta = parametri.resetta;
    	
    	
    	
    	
    	// aggiungi e rimuovi la classe per gestire l'hover sugli span
    	
        $('.edit').live('mouseover', function(){
    										  
    		$(this).addClass(""+classeHover+"");
    			
    	});
    	
    	
    	 $('.edit').live('mouseout', function(){
    										  
    		$(this).removeClass(""+classeHover+"");
    			
    	});
    
       
        var cont = 0;
    	
    	$(""+idTabella+" .edit").live('click',function(){
    		
    	idSpan = $(this).attr("id");
    	testoSpan = $(this).text();	
    	lunghezzaSpan = testoSpan.length + 1;
        
    	cont++; // aumenta cont
    
    	
    			if(cont<=1){ // dopo il primo click appendi la form intorno alla tabella e aggancia il submit
    			
    				$(this).parents("table"+idTabella+"").wrap("<form action=\"#\" id=\""+idForm+"\"></form>");
    				
    	
    				
    				$("<input type=\"reset\" id=\""+idResetta+"\" value=\"annulla\" />").insertAfter($(this).parents("table"));
    				$("<input id=\""+idInvio+"\" type=\"submit\" value=\"salva i dati\" />").insertAfter($(this).parents("table"));
    				
    			
    			} // fine if prima iterazione
    			
    			
    		$(this).replaceWith("<input type=\"text\" name=\""+idSpan+"\" class=\"text\" size=\""+lunghezzaSpan+"\" value=\""+testoSpan+"\" />");
    		// sotituisci il testo con un input con value pari al testo
    
         
    	}); //  fine bind
    	
    	
    	$("#"+idInvio+"").live('click',function(){ 
    									   
    	
    									   
         var padre =  $(this).parents("form");
    	 id= "#"+padre.attr("id")+" input.text";
    	 
    	 dati = new Array();
    	 
    	 $(id).each(function(i){
    						 
    				// al click sostituisci tutti gli input aperti con degli span
    				// il valore degli span viene calcolato dalla funzione settaValori
    				// setta Valori riceve i dati da inviare e il name dell'input
    						 
    				dati[i] = $(this).attr("name")+"|"+$(this).val();
    				$(this).replaceWith("<span id=\""+$(id).attr("name")+"\" class=\"\edit\">"+settaValori(dati, $(id).attr("name"))+"</span>");
    
    					
    	 })
    	 
          
    	// fai comparire il div con la conferma del salvataggio dei dati
    	 
       	$("<div class=\"esito\">Dati Aggiornati!</div>").insertAfter("#"+idForm+"").fadeOut(1800);
        
    	MiaTabella = $(idTabella).clone(); // clona la nuova tabella
    	
        $("#"+idForm+"").replaceWith(MiaTabella); // sostituisci per intero lka form con la nuova tabella
    	
    	cont=0; // resetta cont per far ripartire la logica di creazione della form
    	  
    	 return false;
    
    
         
    	});
    	
    
    
    	$("#"+idResetta+"").live('click',function(){ 
    									   
    		padre = $(this).parents("form")
    		id= "#"+padre.attr("id")+" input.text"
    		
    
    			$(id).each(function(){ // ogni input text
    				
    			// sostituiscilo con uno span con testo pari al suo value
    			
    			$(this).replaceWith("<span id=\""+$(this).attr("name")+"\" class=\"\edit\">"+$(this).val()+"</span>");
    
    			});
    			
    
    		
        });
    
    
    
     	function settaValori(dati, riferimento){ 
       
       // fai una richiesta ajax e invia i dati allo script lato sever
       // aggiorna i nuovi valori e lascia inalterati gli altri
       // rimuovi il tag form
       
    		 $.ajax({
    		   type: "POST",
    		   url: scriptUrl,
    		   data: "name="+dati+"",
    		   success: function(html){
    		
    					   var temp = html.split(',') /* crea un array dei valori che torna lo script */
    					  
    					   var posto = "#"+riferimento; /* appendi il valore nel posto giusto */
    					  
    							for ( var i=0, len=temp.length; i<len; i++ ){
    								if (temp[i].split('|')[0] == riferimento) 
    								  daRestituire = (temp[i].split('|')[1]);
    						  }
    					  
    						$(posto).append(daRestituire); /* appendi il valore nel posto giusto */
    					
    							 
    	
    				  }
    		   
    	
    			});
    		 
    
       return ""; /* non ritornare altro */
    
    	};
    
     }
       
    })(jQuery);
    L'immaginazione è l'intelligenza che si diverte

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Il link dov'è? Sicura (hai verificato) che la pagina che aggiorna i dati sul server funzioni bene/correttamente? Prova a mettere degli alert nello script per vedere con ritorna cosa passa.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246
    Originariamente inviato da cavicchiandrea
    Il link dov'è? Sicura (hai verificato) che la pagina che aggiorna i dati sul server funzioni bene/correttamente? Prova a mettere degli alert nello script per vedere con ritorna cosa passa.
    non conoscendo bene ajax non so come recuperare i dati passati alla funzione, lasciando la pagina "test.asp" senza la query di aggiornamento db, il plugin funziona correttamente, ma ho solo un valore/stringa


    codice:
    nome = Trim(Request("name")) 
    response.write nome
    ecco il link con la pagina di prova senza l'aggiornamento db
    http://www.eliven.net/editing/test.html
    L'immaginazione è l'intelligenza che si diverte

  6. #6
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246
    Originariamente inviato da cavicchiandrea
    Il link dov'è? Sicura (hai verificato) che la pagina che aggiorna i dati sul server funzioni bene/correttamente? Prova a mettere degli alert nello script per vedere con ritorna cosa passa.
    ho inserito il link, hai avuto modo di vedere?
    grazie mille
    elisa
    L'immaginazione è l'intelligenza che si diverte

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da elisa21
    non conoscendo bene ajax non so come recuperare i dati passati alla funzione, lasciando la pagina "test.asp" senza la query di aggiornamento db, il plugin funziona correttamente, ma ho solo un valore/stringa
    Se non conosci ajax bisogna che un minimo lo studi, altrimenti diventa difficile anche solo fare delle prove, o capire le cose da fare. Quando ci sono script complessi e difficile che uno si studi tutto lo script.
    Se senza query funziona potrebbe essere un problema server hai verificato la pagina come t'avevo chiesto?
    ecco il link con la pagina di prova senza l'aggiornamento db
    http://www.eliven.net/editing/test.html
    Se è senza aggiornamento credi che serva molto?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    c'è un errore sicuramente nel funzione associata al click del tasto invia, impostata cosi la chiamata ajax viene effettuate un numero di volte pari alle modifiche effettuate ai campi, se per esempio modifichi tutti i campi del form(sono 8) fai 8 chiamate ajax, per di piu passando dati che hai già salvato nel db nelle precedenti chiamate, insomma non è sicuramente gestita correttamente. La chiamata andrebbe effettuata una sola volta, andando a salvare tutti i dati modificati.

    Anche il passaggio dei dati al server non è gestito nei migliore dei modi, invece di utilizzare un array conviene sicuramente passare un object, jquery si occuperà di convertire l'oggetto in una query string.

  9. #9
    Originariamente inviato da elisa21
    non conoscendo bene ajax non so come recuperare i dati passati alla funzione, lasciando la pagina "test.asp" senza la query di aggiornamento db, il plugin funziona correttamente, ma ho solo un valore/stringa


    codice:
    nome = Trim(Request("name")) 
    response.write nome
    ecco il link con la pagina di prova senza l'aggiornamento db
    http://www.eliven.net/editing/test.html
    E' molto semplice, stampando a video "nome" ottieni una stringa del tipo:
    nome|Luca,cognome|Vizzi

    dove nome è l'id dello span:
    <span class="edit" id="nome">
    e cognome è l'id dello span
    <span class="edit" id="cognome"><%= strCognome %></span>

    quindi per leggere i valori basta eseguire uno split sulla stringa "nome".
    Codice ASP:
    codice:
    arr_dati=Split(nome,",")
    for i=0 to ubound(arr_dati)
        arr_val=Split(arr_dati(i),"|")
        nomeCampo=arr_val(0)
        valoreCampo=arr_val(1)
        Execute(nomeCampo&"="&valoreCampo)'creo le variabili
    next
    Response.Write(nome&"
    ")
    Response.Write(cognome&"
    ")
    se Request("name") fosse: nome|Luca,cognome|Vizzi
    Il codice sopra stamperebbe a video:
    Luca

    Vizzi

  10. #10
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246
    Originariamente inviato da cavicchiandrea
    Se non conosci ajax bisogna che un minimo lo studi, altrimenti diventa difficile anche solo fare delle prove, o capire le cose da fare. Quando ci sono script complessi e difficile che uno si studi tutto lo script.
    Se senza query funziona potrebbe essere un problema server hai verificato la pagina come t'avevo chiesto?
    Se è senza aggiornamento credi che serva molto?
    certo andrea devo sicuramente studiarlo, credevo che fosse più veloce la cosa..ma sbagliavo.
    ho inserito la pagina senza aggiornamento per far vedere che il problema è nel recupero delle variabili.
    Cmq cercherò di capire come risolvere,
    grazie lo stesso
    L'immaginazione è l'intelligenza che si diverte

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.