Newsgroup: it.comp.lang.javascript
Titolo: javascript, form e cgi

Ciao, avrei bisogno di inserire una funzione in una pagina associata ad
un pulsante. Quando il pulsante viene premuto, la funzione myfunc(form)
dovrebbe cambiare la action del form da cui viene chiamata. E fin qui,
tutto bene, ho visto che basta cambiare form.action.
Il problema e' che alla nuova azione (che comunque e' un post cgi),
vorrei passare anche alcune variabili definite nella sezione javascript
e non presenti nel DOM del documento (non so se mi sono spiegato), in
particolare un array.
Il fatto e' che il documento in questione non e' mio e vorrei
modificarlo il meno possibile. Ora, la questione e', come faccio ad
aggiungere un array al form da spedire con POST? Ho visto che
form.mylist = new Array()
non funziona. Forse il form ha delle proprieta' "statiche" e non possono
esserne aggiunte ne' tolte?
d

 aggiungere un array al form da spedire con POST? 
non puoi mettere questi valori nella action e passarli come querystring?
-- 
"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.

 non puoi mettere questi valori nella action e passarli come querystring?
Mmm, e' piu' facile a dirsi che a farsi. La pagina da cui parto e' a sua
volta generata da uno script perl di dimensioni atroci e molto
complicato (per cui preferirei non metterci troppo le mani).
E, altra cosa, quanto puo' essere lunga una stringa da passare in cgi?
Perche' questa potrebbe essere moolto lunga... Se potessi passare un
array che gia' esiste...
d

 E, altra cosa, quanto puo' essere lunga una stringa da passare in cgi?
non molto, tieni conto un 1000 caratteri mediamente (ci sono differenze tra
le diverse versioni dei browser).
altrimenti devi aggiungere un campo input hidden e scriverci lì i valori da
inviare.
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 inviare.
quindi di passare l'array definito nell'header non se ne parla...

 quindi di passare l'array definito nell'header non se ne parla...
client-side puoi solo metterlo come stringa con separatore, e poi
ricostruirlo server-side.
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.

 inviare.
Ok, ho risolto cosi'. Ora lo script cgi mi riceve esattamente i valori che
volevo.
Ora un'ultima (spero) domanda: in una funzione come posso dire di aprire
una nuova finestra come risultato di un form.submit()?
Non so molto di javascript, quindi scrivo un po' di boiate:
myFunc(form){
	xwindow = null;
	form.action = "cambio.cgi";	
	xwindow = window.open(come dico di aprirla come form.submit())?
}
e poi e' legale questa cosa:
myFunc(form) {
	myForm = form;
	myForm.action = "pippo";
}
per meglio dire, come creo un nuovo oggetto form, copia di quello in
ingresso, per potergli cambiare tutto senza necessariamente cambiare le
proprieta' di quello accettato dalla funzione?
Non so se mi spiego...
d

 Non so se mi spiego...
io non ho capito molto...
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 io non ho capito molto...
Perche' all'uscita della funzione myFunc(aForm), la form che ho passato
come argomento della funzione si tiene la action e il target che
eventualemte ho settato a myForm. Mi viene il dubbio che myForm sia solo
unpuntatore a aForm e non un oggetto copia della stessa.
d

 unpuntatore a aForm e non un oggetto copia della stessa.
certo, è un riferimento (puntatore) all'oggetto...


 certo, è un riferimento (puntatore) all'oggetto...
Quindi l'unico modo per venirne fuori e' creare un altro form, e fare una
roba del genere:
<form name="ilprimo"... action="script1.cgi">
<input type="button"... onClick(myFunc())>
</form>
<form name="ilsecondo"... action="script2.cgi">
<un sacco di parametri qui>
</form>
e scrivere in myFunc qualcosa per mandare a script1.cgi il contenuto di
document.ilsecondo?
Cioe', non so se si era capito, ma il problema qui e' che il contenuto di
una  form dovrebbe poter essere inviato a due differenti script.
Normalmente va a script2.cgi (nell'esempio), ma per particolari analisi va
a script1.cgi. Quando ho eseguito script1.cgi (in un'altra finestra) devo
poter continuare ad eseguire script2.cgi.
d

 poter continuare ad eseguire script2.cgi.
immagino però tu lo sappia a priori...quindi:
a) va a script2.cgi? normale form
b) va a script1.cgi? onsubmit:
   - setti target
   - scateni il submit
nella popup aperta prima di chiuderla:
   - togli il target
   - modifichi la action
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

    - modifichi la action
Ok, grazie mille. Ora ci lavoro sopra.
d