Newsgroup: it.comp.lang.javascript
Titolo: Validazione form [Ajax]: se ok redirect altrimenti no

Salve, vi spiego il mio problema: ho un form in cui inserisco i dati e
faccio la convalida in un'altra pagina tramite ajax.
Fin qui tutto bene, ora quello che vorrei fare è questo: se i dati
sono errati rimango nella pagina visualizzando un msg di errore,
altrimenti dovrei andare su  un'altra pagina visualizzando un msg di
azione andata a buon fine.
Potrei anche rimanere sempre sulla stessa pagina, visualizzare il msg,
e se questo è di conferma fare un document.location sull'altra pagina
altrimenti rimanere lì.
E' il mio problema è proprio questo: come faccio a sapere dalla
richiesta ajax se ad es. ins=si o ins=no?!?!?
Thanks

 richiesta ajax se ad es. ins=si o ins=no?!?!?
forse non ho capito la domanda, ma: restituisci un valore sì-no al client e
leggilo...
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.


Il problema è che nella risposta ajax ottengo già un div con
all'interno uno script per l'upload foto, e quindi volevo sapere come
potevo fare per ottenere oltre a questo un valore che io possa
elaborare: una variabile che io possa interrogare e agire di
conseguenza al valore.
L'unica soluzione che mi era venuta in mente era casomai di farmi
tornare solo il valore da interrogare(come mi hai suggerito tu), e di
conseguenza aggiungere lo script tramite innerHTML nel div che riceve
la risposta ajax dentro il form chiamante, solo che è un pò "ostico",
in quanto ho notato che non bisogna lasciare spazi, a capo etc.

 conseguenza al valore.
continuo a non capire: se restituisci un div con uno script vuol dire che
non devi cambiare pagina ... altrimenti restituisci un altro script che
cambia pagina...
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 cambia pagina...
Ci ho pensato un pò, e in pratica la procedura che vorrei seguire è
questa: invio la richiesta di inserimento/modifica, se ok mi deve
tornare un msg da cui capisco se è andato a buon fine o meno e in più
l'id dell'inserimento o modifica che sia. A questo punto, se ok,
dovrei reindirizzare in automatico ad un'altra pagina passando l'id,
altrimenti rimanere nella pagina e visualizzare gli errori. Ma come
faccio ad estrarmi questi 2 valori dalla risposta in ajax?
Oppure sarebbe più indicato seguire un'altra procedura?
Grazie per il tempo, soprattutto quello perso per la decifrazione del
mio post.

 faccio ad estrarmi questi 2 valori dalla risposta in ajax?
mi spiace ma continuo a non capire: come fai a leggere il div restituito?
Stessa cosa: leggi p.e. il tag "Ris" restituito, se "1" è andata a buon
fine altrimenti no... Oppure direttamente restituisci "<ID>", se >0 è
andato a buon fine (e quello è l'id da passare), altrimenti non è andato a
buon fine...
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 buon fine...
Resettiamo tutto e ricominciamo da capo: ho un form in cui memorizzo i
dati tramite una richiesta ajax ad un'altra pagina.
Se la memorizzazione va a buon fine mi porta su un'altra pagina in cui
mi visualizza un msg di conferma inserimento, e riepiloga i dati
inseriti, se va male qualcosa rimango sulla pagina del form(così che
l'utente non deve reimmettere i dati inseriti) e visualizzo un msg del
problema riscontrato.
Per ottenere questo la richiesta ajax mi deve restituire un valore
tipo si/no per sapere se l'inserimento è andato a buon fine o meno, il
msg di errore/conferma, e l'eventuale id.
Qual'è il modo per ottenere questi dati tramite la risposta ajax?
Oppure sarebbe meglio un approccio differente al problema?
Grazie ancora per l'interessamento al mio problema.

 Qual'è il modo per ottenere questi dati tramite la risposta ajax?
cosa è "ajax" per te? stai usando un oggetto già fatto oppure te lo sei
costruito te? sincrono o asincrono?
in generale in qualsiasi tutorial ajax trovi come leggere i dati
restituiti; in particolare invece dipende dal contesto (vedi le domande
sopra)
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 sopra)
Mi sono costruito una richiesta ajax per la mia necessità, in modalità
asincrona, ottenendo come risposta dal server non xml ma una stringa,
e di solito come output ho sempre visualizzato, dopo l'elaborazione,
una tabella, un div, o cose simili.
In questo caso però la mia necessità è un'altra: devo ottenere dei
dati, o meglio delle variabili da interrogare sul form chiamante in
modo tale da poter decidere se reindirizzare, visualizzare msg, o
cos'altro.
Sto sbagliando la procedura di lavoro?
Grazie.

 una tabella, un div, o cose simili.
beh, hai una stringa? elaborala ... restituisci a questo punto 0 se errore
oppure l'id.
detta str la stringa risultante:
 if(str=="0")
  alert("errore!");
 else
  window.location.href="tuapagina.htm?id="+str;


   window.location.href="tuapagina.htm?id="+str;
Il mio problema è legato ad un discorso di informazione all'utente: se
si verifica un errore, io dovrei visualizzare un msg che indichi cosa
è successo, ma per capire che il msg è di errore invece che di
avvenuta conferma io pensavo di estrapolarmi un valore tipo msg=ins_si
o msg=ins_no e successivamente la stringa contenente il msg di errore,
ad es. tipo_err=Unknown column...
E' sbagliato come ragionamento?
Grazie ancora.

 E' sbagliato come ragionamento?
no
qualsiasi tutorial di ajax ti dice come leggere i dati restituiti; se stai
restituendo una stringa non well-formed (perché mai poi) decidi che stringa
restituire, poi chiedi se hai problemi per elaborarla ...
 il primo che ho trovato:
 
http://ajaxpatterns.org/XMLHttpRequest_Call#XML_Responses


  
http://ajaxpatterns.org/XMLHttpRequest_Call#XML_Responses
Il link che mi hai postato lo avevo visitato già, ma non avevo notato
la pagina in questione... purtroppo la fretta è cattiva consigliera.
Ti ringrazio per il valido aiuto e per il supporto continuativo, mi
scuso ancora per il tempo che ti ho fatto perdere.
Provo subito ad elaborare qualcosa e metterlo in pratica.
Grazie ancora.

 Provo subito ad elaborare qualcosa e metterlo in pratica.
fai sapere se hai problemi




Perchè utilizzi una chiamata asincona per un problema che è sincrono?  sei nel classico schema

1) Submit

2) If errore pagina di errore

3) If not errore pagina "evviva!"



A che ti serve qui Ajax?