Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Interazione Javascript - PHP
Forum - Javascript - Interazione Javascript - PHP

Avatar
00bullo00 (Normal User)
Newbie


Messaggi: 17
Iscritto: 19/09/2010

Segnala al moderatore
Postato alle 12:46
Mercoledì, 01/08/2012
Salve a tutti, vorrei un consiglio da voi. In pratica la situazione è questa: ho una pagina Javascript che chiama una pagina PHP passandogli dei valori. Una volta ricevuti i valori, la pagina PHP li registra. Se avviene un errore del tipo "l'utente che si sta tentando di registrare è già esistente" (quindi un tipo di errore che non posso ne prevedere ne controllare con il Javascript) non so come farlo leggere dal codice Javascript.

In pratica io ho tentato la seguente soluzione:

Codice sorgente - presumibilmente Javascript

  1. $("#Messaggio").load("PaginaPHP.php", { Valori di input} );
  2. if ($("#Messaggio").text()=="Utente registrato correttamente. ")
  3. {
  4.   Codice da eseguire nel caso non ci siano errori
  5. }



Ovvero, dato che l'eventuale messaggio di errore o di operazione completata della pagina PHP viene stampato in "PaginaPHP.php", ho pensato di caricare la pagina generata dal codice php nel div "Messaggio".

Il problema è che il div si aggiorna correttamente con il messaggio di errore o conferma ma il valore che mi restituisce la funzione $("#Messaggio").text() è il contenuto del div non aggiornato dal codice (quindi il codice nel ramo vero dell'if non viene mai eseguito, successo o meno dell'operazione).

Allora vi domando: c'è una funzione/modo che mi permetta, invece di salvare il risultato della pagina nel div, in una variabile? Perchè avevo trovato qualche funzione, ma non mi sembra sia possibile passare dei parametri alla pagina caricata.

Oppure c'è un modo per eseguire del codice dopo che la modifica al div è stata effettuata? (ad esempio, qualche evento).

Vi ringrazio in anticipo, sperando di essermi spiegato.

Ultima modifica effettuata da 00bullo00 il 01/08/2012 alle 12:47
PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 13:04
Mercoledì, 01/08/2012
Non è che $("#Messaggio") non si aggiorna, è che l'if viene eseguito prima che la chiamata AJAX sia completata.
Per eseguire quel codice una volta che la chiamata AJAX è stata fatta, non devi usare .load(), ma $.ajax(), che accetterà un oggetto con la proprietà "url" che indica la pagina da chiamare (quindi PaginaPHP.php), "data" per i parametri da passare, e "success" con una funzione da eseguire alla fine della richiesta in caso di successo. In caso di errore (di parsing della risposta, di timeout o del server), verrà eseguita la funziona passata a "error".
In ogni caso guardati la documentazione della funzione visto che le opzioni sono molte di più

PM Quote
Avatar
00bullo00 (Normal User)
Newbie


Messaggi: 17
Iscritto: 19/09/2010

Segnala al moderatore
Postato alle 17:26
Mercoledì, 01/08/2012
Ti ringrazio, ho risolto con la tua funzione, che mi permette anche di ricevere il messaggio dalla pagina php in una variabile e non di stamparlo obbligatoriamente in un div.

Che poi anche la load può ricevere come parametro una funzione da eseguire in caso di successo dell'operazione, ma , oltre al fatto che me ne ero dimenticato, quando ho visto quel problema pensavo che le modifiche all'html venissero fatte alla fine del codice Javascript e, fino ad allora, memorizzate da qualche parte.

Grazie ancora.

PM Quote