Newsgroup: it.comp.lang.javascript
Titolo: Penso strafaq: ricevere valore da pagina esterna aperta.

In pratica ho questa necc.
ho un form prima di fare il submit passo tutto ad un validatore js
che funziona
fra le opzioni di questo validatore c'è quella di aprire un a pagina esterna 
.php fare dei controlli
e prenderne dei valore.
es concreto:
inserisco dei dati
-nome
-cognome
submit del form
verifico col validatore che non siano vuoti
Come passa questo controllo,
poi tramite il php deve vedere che questi non siano presenti nel DB quindi
la mia idea era quella di aprire dal  validatore.js una pagina anche 
visibile (script php) far fare a lui quello
che vuole e poi prendere l'esito.
il problema e come prendere l'esito .
cioè il validatore che poi è una funzione che intercetta il submit del form 
deve fare tutto questo e se la risposta
è positiva proseguire col submit
se è negativa return false e messaggio (magari quello lo scrivo direttametne 
nella pagina aperta)
es submit abortito.
Sono stato chiaro mi potete dare una mano ?
Grazie ciao.

 In pratica ho questa necc.
[CUT]
Se ho ben capito non risolvi con onsubmit perché devi attendere il
caricamento della popup.
io aggiungerei un'altra function: onsubmit lanci il validatore e
restituisci false, e se è tutto ok scateni poi con un'altra function (o
direttamente) il submit() (scatenando il submit() via javascript l'onsubmit
non viene eseguito).
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.


In pratica non è tanto il problema del submit o onsubmit che è già risolto, 
tanto quello di prendere un valore di ritorno
dalla pagina pop-up che apro per caricare lo script lato server.
[form]->validazione client js-> validazione con pop->
  se tutto ok -> submit();
  se non (nel popup  è già scritto un messaggio di errore) -> submit 
abortito
il problema difatto è proprio capire come far comunicare le due pagina con 
js.
p.s
Prima usavo HXMHttp (l'oggetto per le richieste asincrone di js) ma per vari 
motivi che non ho tempo di spiegare
adesso lo devo togliere.
---

 dalla pagina pop-up che apro per caricare lo script lato server.
forse non sto capendo...apri la popup? ti salvi il riferimento alla window
(es. mywin=window.open()) e poi usi mywin come vuoi (io passerei il valore
dalla popup alla form principale e non viceversa...)
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.


Anche io intendo fare così.
Mi sorgono alcuni dubbi.
1) Come posso fare nel codice js per aspettare fino al ricevimento del 
messaggio della popup ?
2)
e dalla popup come faccio per restituire i valore ? una cosa del tipo
this.stato = "ok"; ad esempio ?
e poi faccio
if (mywin.stato == "OK") alert('ok")etc.
else
...
??
---

 this.stato = "ok"; ad esempio ?
opener.tuafunction("ok"), per 
esempio.in
 tuafunction se il parametro è ok
=> submit(), altrimenti alert.
-- 
"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.


Il problema e che i validatori lato server non sono solo ma n
Quindi sono obbligato ad aspettare come potrei fare ?

 Quindi sono obbligato ad aspettare come potrei fare ?
Boh...se proprio devi aspettare non so, potresti alla fine valorizzare una
variabile globale e con setTimeout scatenare una function ogni tot
millisecondi che verifica se tale variabile è valorizzata. Mi sembra un po'
una porcata, però...
Ma evitare la popup e usare xmlHttp in modo non sincrono?
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

On Tue, 11 Oct 2005 15:13:08 +0200, yag wrote:
Premsso che non capisco perché tu voglia fare tutto questo "rigirio":
Perché non fai come si è sempre fatto?
validatore js -> se lo supera invio dei dati al server -> validatore PHP ->
restituzione della pagina (notifiche di errore o esecuzione corretta).
Se non vuoi ricaricare la pagina, allora la cosa migliore è usare l'oggetto
XmlHttpRequest, che esiste proprio per questo genere di cose. Ma a quanto
capito non puoi / vuoi usarlo.
In alternativa, potresti mettere la maschera di login in un IFRAME, e
ricaricare solo quello.
Altrimenti puoi fare qualche accroccrio con le immagini, come già più volte
è stato spiegato in questo NG, ma ti ripeto che secondo me è la logica che
è da rivedere.. il workflow.
Non ha senso dire:
validazione js -> validazione con pop ?? -> se ok submit??
Perché la validazione sulla popup è già un "submit" di suo, in quanto
stiamo inviando dei dati al server. Il workflow corretto è quello citato
all'inizio di questo post.
-- 
~ "FINARMENTE LI SFRATTATI AVRANNO UN TETTO SULLA TESTA!
...però tirato ammodino, un tegolo pe' vorta.." (Il vernacoliere)


Il discorso che non voglia usare xhmlHttp che poi è già stato usato è solo 
per un problema di tempo
in quanto devo gestire parecchie cose una fra tutte passare dei parametri al 
"codice" js per poter richiamare
la pagina php cosa non indifferente visto che io voglio una "cosa" generale 
e riusabile.
per quanto riguarda il workflow o flusso non è tanto scorretto.
gli step sono questi:
1 ) validazione dati lato client (senza di essi in sostanza non avrebbe 
senso procedare alla "vera" fase inserimento) -> logica di business
// fatto tramite js per evitare di spedire dati al server
2) validazione dati lato server verificare se quei dati inseriti sono 
corretti rispetto alle politiche decise
//fatto tramite pagina lato server (php) perchè è una verifica da fare PRIMA 
di inserire i dati
//es concreto:  non posso inserire uno user con la stessa email e password 
ma ce ne possono essere tanti altri che dipendono dalle politiche scelte.
i punti 1 2 possono essere tanti del tipo
1..10 controlli lato client
1..10 controlli  lato server
vincoli:
sicuramente prima verranno fatti i controlli lato client accertati questi 
verranno fatti i controlli lato server
tutto ok ? -> submit
qualche problema lato client -> 
js_sistema_di_messaggistica_avvisa(MEssaggio);
qualche problema lato server -> *php_paginacheavvisa_dell'errrore.php
in effetti la pagina popup potrebbe stare fuori schermo o invisibile e 
mostrare anch'essa un alert ma questo non è un problema.
problemi:
la pagina lato server ci mette tot secondi per caricare potrebbe anche non 
caricarsi mai :
- manca la connessione
- il server è giù
-altri
in questo caso è cmq corretto che l'inserimento non proceda perchè non si 
devono comunque violare le politiche scelte.
//problema più serio
nel caso la pagina carichi devo trovare il modo di aspettare fino al suo 
termine  e poi proseguire con gli altri validatori
spero di aver chiarito meglio aspetto info grazie ciao :-)

 spero di aver chiarito meglio aspetto info grazie ciao :-)
Da questo punto di vista, erano "chiare" anche prima... :)
-- 
~ Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)