Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [AJAX]Salva dati e riscrivi

    Ciao,
    questo argomento so che è abbastanza gettonato nel forum ma non son ancora riuscito a risolvere (forse perchè non ho trovato la giusta discussione), come da oggetto:
    ho una pagina che contiene sia un form che una tabella riassuntiva di alcuni dati presenti nel db,
    scrivo dei dati nel database tramite AJAX e vorrei che l'utente, come conferma dei dati, vedesse la tabella aggiornarsi !!
    Per fare ciò ho creato principalmente due funzioni: setDati(), getDati() le quali mi sembra abbastanza banale capire a cosa servono.
    Esse possono essere utilizzate in modo autonomo nell'applicazione oppure, come in questo caso, essere usate "in cascata"...ma come gestisco la chiamata di getDati ??
    Tipicamente se faccio
    codice:
    <script>setDati; getDati();
    la seconda sarà eseguita dal client prima che i dati siano scritti nel db e quindi non ritorna quello che l'utente si aspetta.
    Riporto di seguito la parte importante di setDati():
    codice:
    		xmlHttp.open("GET",url,true)
                    xmlHttp.setRequestHeader("connection", "close");						
    		xmlHttp.send(null)
    		xmlHttp.onreadystatechange=StateChange
    E quella di getDati()

    [CODE]
    xmlHttp.open("GET",url,true)
    xmlHttp.setRequestHeader("connection", "close");
    xmlHttp.send(null)
    xmlHttp.onreadystatechange=function stateChanged()
    {
    if (xmlHttp.readyState==0)
    document.getElementById(target).innerHTML="Errore: richiesta non inizializzata";
    if (xmlHttp.readyState==1)
    document.getElementById(target).innerHTML="Caricam ento.";
    if (xmlHttp.readyState==2)
    document.getElementById(target).innerHTML="Caricam ento..";
    if (xmlHttp.readyState==3)
    document.getElementById(target).innerHTML="Caricam ento...";
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    document.getElementById(target).innerHTML=xmlHttp. responseText;
    };
    ]
    nella quale ho implementato un rudimentale controllo sullo stato della richiesta !!

    Che modifiche dovrei fare alle funzioni perchè possano "interagire" ??
    Forse mi basta anche un semplice link alla discussione giusta, mi son appena riletto la guida ajax sul sito ma non è stata risolutiva
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che mi sembra un uso distorto di ajax, direi che cosi dovresti risolvere
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    //risposta di ritorno = ok
    if(xmlHttp.responseText = "ok") setDati('paginacherecuperadati','divdidestinazione ');

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Mmm grazie, ...ma non credo di aver capito, dove andrebbe messo questo codice ??
    Il codice della chiamata so che è un po' ingarbugliato ma l'ho "sintetizzato" tanto per rendere l'idea ed inoltre sto cercando di capire esattamente come gestire questo problema e quindi sposto qua e là
    :master:
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non l'ho specificato non credo fosse necessario, comunque al posto di questo:
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    document.getElementById(target).innerHTML=xmlHttp. responseText;
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: E' molto probabile che non abbia capito nulla.
    Comunque, mi pare di capire che devi spedire dei dati nel server, scriverli nel database, e aggiornare una tabella di riepilogo dei dati inseriti.

    Se questo è vero si può utilizzare il classico codice ajax (pseudo codice)
    codice:
    function setDati() 
    {
    	ajax(url, getDati, parameters);
    	function getDati()
    	{
    		var t = this.request.responseText;
    		document.getElementById("div1").innerHTML = t;
    	}
    }

    :master: non so, fai sapere
    Pietro

  6. #6
    Beh sì, una cosa del genere che ho già realizzato come puoi vedere dal mio codice iniziale,
    ma complicato dal fatto che le due funzioni devono essere indipendenti, vorrei poterle utilizzare anche autonomamente (solo scrivo o solo leggo) !!
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da rasega
    Beh sì, una cosa del genere che ho già realizzato come puoi vedere dal mio codice iniziale,
    ma complicato dal fatto che le due funzioni devono essere indipendenti, vorrei poterle utilizzare anche autonomamente (solo scrivo o solo leggo) !!
    :master: così potrebbe andare?

    codice:
    function setDati() 
    {
    	ajax(url, onLoad, parameters);
    	function onLoad()
    	{
    		getDati();
    	}
    }
    
    
    
    function getDati() 
    {
    	ajax(url, onLoad, parameters);
    	function onLoad()
    	{
    		var t = this.request.responseText;
    		document.getElementById("div1").innerHTML = t;
    	}
    }
    Pietro

  8. #8
    Ho temporaneamente risolto chiamando la funzione come consigliato da cavicchiandrea:
    codice:
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
     getDati(par1,par2, par3)
    quindi direttamente all'interno di setDati(par3, par4, par5, par1, par2, par3),
    questo però comporta di dover passare a setDati anche i parametri che servono a getDati...che può essere giusto nel caso in cui getDati debba essere chiamata, ma inutile se i dati verranno solo scritti e getDati non sarà chiamata.
    Intanto grazie, se qualcun altro ha qualche consiglio è ben accetto,
    perchè questa soluzione mi sembra abbastanza "artigianale" e magari esiste un metodo più standard per realizzare quanto sopra.

    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  9. #9
    Originariamente inviato da pietro09
    :master: così potrebbe andare?
    Grazie pietro09, ho risposto contemporaneamente a te e mi pare che le nostre soluzioni si avvicinino molto...ma mi rimane il dubbio che non siano molto corrette !!
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

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.