Newsgroup: it.comp.lang.javascript
Titolo: Problema con form dinamico

Ciao a tutti, ho un problema con la gestione di un form dinamico.
In altre parole, da un link, voglio far passare alcuni valori tramite il 
metodo post di un form; per fare ciň ho usato il seguente codice:
<a href='javascript:void(0)' onclick='var form = 
document.createElement("form"); var input = ""; form.action = 
"miapagina.php"; form.method = "POST"; input = 
document.createElement("input"); input.type = "hidden"; 
input.name
 = 
"entrant"; input.value = "8"; form.appendChild(input); 
document.getElementsByTagName("body")[0].appendChild(form);form.submit(); 
return false;' title='miotitolo'> miolink </a>
....e nella pagina miapagina.php ho provato a leggere i valori passati da 
NAME e VALUE, nel modo seguente:
<?php
   echo "NAME  => " . $_POST["name"] . "<BR>";
   echo "VALUE => " . $_POST["value"] . "<BR>";
 ?>
Il problema vengono lette delle stringhe vuote.
Sicuramente avrň sbagliato qualcosa nella riga precedente, ma non riesco a 
venire a capo del problema. Vi ringrazio in anticipo, per aiutarmi a 
risolvere questo problema.
Cooper.
 

  ?>
mai provata una cosa simile, e non conosco php, ma: il name non è
"entrant"? perché leggi "name" e "value"?
Prova inoltre a non usare "form" come nome della variabile, visto che è una
parola riservata.
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 ha scritto nel messaggio 
news:19nt447ua3wxf$.hm7wgvt5tig4.dlg@40tude.net...


la variabile    $_POST["name"]    contiene il valore di  "name" del campo: 
input.name
; in altre parole dovrebbe contenere il valore "entrant" eppure 
contiene una stringa vuota.
Allo stesso modo $_POST["value"] dovrebbe contenere il valore di "value" del 
campo:  input.value, ovvero 8 ma contiene una stringa vuota.
Il link <a> </a> e le quattro righe di codice php, sono nella stessa pagina, 
e il link <a></a> punta alla pagina medesima, quindi i valori dovrebbero 
essere passati come form con metodo post alla pagina medesima e quindi letti 
tramite le quattro righe php.
Provato a  cambiare il nome della variabile form in form2 eccetto in 
document.createElement("form");  ma nulla, ho provato a sostituire anche li 
form con form2 ma il risultato non cambia.
Solo una cosa ho notato che nella barra di stato mi visualizza il messaggio: 
"Errore nella visualizzazione della pagina".
Ma non riesco a capire l'errore.
Grazie ancora,
Cooper.
 

 "Errore nella visualizzazione della pagina".
mbè, se usi IE per debug ciao ... cosa dice la console errori di firefox?
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.


Con la console di errori di firefox, l'unico errore (piů corretto dire 
avviso) č questo qui:
              Avviso: Una stringa vuota č stata passata a getElementById().
Come posso correggere?
Grazie ancora,
Cooper. 

 Come posso correggere?
scoprendo dove è l'errore: nel codice che hai postato non viene usato
getElementById, quindi l'errore è altrove, non nella parte che hai postato
...
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 ...
La pagina si compone soltanto delle righe che ho riportato nel primo post.
Però se l'avviso dice che una stringa vuota è stata passata a 
getElementByld, devo supporre che bisogna inizializzarlo, o no? come dovrei 
quindi scrivere l'istruzione di inizializzazione? 

 La pagina si compone soltanto delle righe che ho riportato nel primo post.
impossibile: in quelle righe non vi è traccia di getElementById.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.


Questo è il codice integrale della pagina prova.php... controlla pure, e 
dimmi se ottieni qunto ottengo io oppure no:
<?php
   echo "campo 1 => " . $_POST["name"] . "<BR>";
   echo "campo 2 => " . $_POST["value"] . "<BR>";
 ?>
<html>
<head>
<title>pagina di prova</title>
</head>
<body>
<a href='javascript:void(0)' onclick='var form = 
document.createElement("form"); var input = ""; form.action = "prova.php"; 
form.method = "POST"; input = document.createElement("input"); input.type = 
"hidden"; 
input.name
 = "entrant"; input.value = "8"; 
form.appendChild(input); 
document.getElementsByTagName("body")[0].appendChild(form);form.submit(); 
return false;' title='page 8'>8</a>
</body>
</html>
ho rimesso form al posto di form2, perchè sia con form che con form2 non 
vengono comunque rilevati errori; ma puoi controllare anche tu sia con form 
che con form2.
 

 dimmi se ottieni qunto ottengo io oppure no:
[CUT]
Copiaincollato codice html, tutto ok: nessun riferimento a getElementById
(ovviamente), clicco e mi compare "Pagina non trovata" (ovviamente, perché
mi manca la prova.php).



Ovvio, perchè è richiama la pagina stessa; la pagina col codice che ti ho 
indicato si chiama: prova.php.
Infatti se leggi nelle mie prime due righe di questo post che hai anche 
quotato ho scritto:  "questo è il codice integrale della pagina PROVA.PHP"
Ti è sfuggito questo particolare...
Cooper.
 

 Ti è sfuggito questo particolare...
non mi è sfuggito: non ho php ed è irrilevante in quanto completamente
server-side ...
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.


Se non hai php è un altro discorso; ovvio allora che in locale non puoi 
vedere il risultato prodotto (puoi comunque installare xampp, per ovviare al 
problema) e visualizzi il codice php come parte del codice html.
Con php installato, tu nel codice html non visualizzi ciò che è compreso fra 
i tag:  <?php e ?>  ma visualizzi al loro posto il codice generato da php, 
che in questo caso corrisponde a:
campo 1 => <BR>campo 2 => <BR>
<html>
<head>
<title>new PEAR::Pager example</title>
</head>
<body>
<a href='javascript:void(0)' onclick='var form = 
document.createElement("form"); var input = ""; form.action = "prova.php"; 
form.method = "POST"; input = document.createElement("input"); input.type = 
"hidden"; 
input.name
 = "entrant"; input.value = "8"; 
form.appendChild(input); 
document.getElementsByTagName("body")[0].appendChild(form);form.submit(); 
return false;' title='page 8'>8</a>
</body>
</html>
In ogni caso, puoi ovviare al problema sostituendo il codice php, con il 
relativo codice javascript per leggere in un alert i valori passati da 
"name" e value" tramite il metodo post del form.
Anche in questo caso sono certo che noterai che il valore sarà una stringa 
nulla.
Io non so come fare questo che ti ho detto in javascript, ma tu che conosci 
molto meglio di me il javascript sicuramente saprai come effettuare questa 
verifica usando javascript per leggere i valori passati tramite post dal 
form.
 

 Se non hai php è un altro discorso
non è vero: io sto parlando dell'errore prodotto sia da IE che da firefox,
che è la prima cosa da sistemare per capire cosa non va ... per testare
senza php basta convertire POST in GET per vedere a video il risultato, che
è corretto:
 prova.php?entrant=8.
Come vedi passa correttamente il valore "entrant=8".
Mi ripeto: il problema è che ti segnala quell'errore, che non è dovuto al
codice che stai postando ma a qualcos'altro (frame? altre window?
installazione fottuta?)
Oppure a quella per me strana istruzione php, che non mi convince anche se
te dici il contrario (e ne saprai ben più di me che non so cosa sia php).
Leggo però dalla documentazione:
http://php.html.it/guide/lezione/2663/le-variabili-get-e-post/
che sembrerebbe essere come dico io ($_POST["entrant"]), vedi te [qua non
si parla di php e, come dicevo, io non so cosa sia]
-- 
"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.


"entrant" è il valore che dovrebbe essere letto dalla variabile 
$_POST["name"], posso invitarti a dare una lettura qui:
http://it.php.net/variables.external
Cooper.
 

 
http://it.php.net/variables.external
letto, non trovo info su $_POST["name"] (a meno che ovviamente l'input non
abbia name="name") e, da quel che capisco, resto della mia opinione:
$_POST["entrant"] è corretto, "name" non viene passato (non esiste un input
con name="name") e quindi correttamente visualizza una stringa nulla.
Comunque sia qua non si discute di php (e a me sinceramente non mi
interessa conoscerlo).
-- 
"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.