|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Membre régulier
![]() Date d'inscription: juin 2007
Messages: 115
|
Oui, je formule différemment une question déjà posée pas loin dans le forum mais le titre du sujet ne correspondait pas vraiment au problème. Il s'agissait en fait de MODIFIER dynamiquement un formulaire déjà existant. Et c'est ce que je retrouve un peu partout sur le net depuis ce matin...
Mon problème est la CREATION de A à Z d'un formulaire et de sa soumission. Pour quelle raison ? Je souhaite lancer un CGI sans passer par un bouton ET en post pour que les arguments ne passent pas dans l'url. Je suis en Perl et je peux utiliser le CGI::redirect mais il ne fonctionne qu'en GET donc on voit passer les arguments dans l'url... J'ai donc choisi de créer un formulaire dans un cgi qui est lancé depuis une autre page, ce formulaire étant soumis automatiquement. J'ai donc écris ce code : Code :
<script language=javascript> alert("hello") ; var formulaire = document.createElement('form'); formulaire.setAttribute('action','../test.pl') ; formulaire.setAttribute('method','post') ; var fileElem = document.createElement('input'); fileElem.setAttribute('type','hidden'); fileElem.setAttribute('name','file'); fileElem.setAttribute('value','nom_fichier'); formulaire.appendChild(fileElem) ; formulaire.submit() ; alert(formulaire.childNodes[0].value) ; </script> Lors du "formulaire.submit()", la soumission ne se fait pas et j'ai le deuxieme alert qui me sort correctement 'nom_fichier'. De même j'ai pu vérifier que le cgi qui devrait se lancer (test.pl) était la bonne url : le alert me donnait qqchose du genre : http://monserver.fr/test.pl Donc je ne comprends pas pourquoi le submit ne se fait pas. Je n'ai aucun message d'erreur dans ma console javascript. J'ai essayé : Code :
document.formulaire.submit() J'ai également essayé un : Code :
document.appendChild(formulaire) ; Code :
Erreur*: uncaught exception: [Exception... "Node cannot be inserted at the specified point in the hierarchy" code: "3" nsresult: "0x80530003 (NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)" location: "http://monserver.fr/launch.pl?file=test_file Line: 12"] |
|
|
|
|
|
#3 (permalink) | |
|
Membre régulier
![]() Date d'inscription: juin 2007
Messages: 115
|
Citation:
Code :
Erreur*: document.body is null Il faut que je crée également un élément body et que j'insère ma form dans ce body ? J'essaye... |
|
|
|
|
|
|
#4 (permalink) |
|
Membre régulier
![]() Date d'inscription: juin 2007
Messages: 115
|
Bon en fait ça ne donne rien de plus...
enfin, si toujours une erreur "uncaught exception" lorsque je veux ajouter un body au document. A priori impossible de faire un appenchild sur le document lui-même. Bon, là je sèche... |
|
|
|
|
|
#5 (permalink) |
|
Membre régulier
![]() Date d'inscription: juin 2007
Messages: 115
|
Voici exactement la page qui est générée (résultat du copier coller lorsque je demande le "code source de la page" dans mon navigateur après le chargement de la page) :
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> </head> <body> <script language=javascript> alert("hello") ; var formulaire = document.createElement('form'); formulaire.setAttribute('action','../test.pl') ; formulaire.setAttribute('method','post') ; var fileElem = document.createElement('input'); fileElem.setAttribute('type','hidden'); fileElem.setAttribute('name','file'); fileElem.setAttribute('value','test_file'); formulaire.appendChild(fileElem) ; formulaire.submit() ; alert(formulaire.childNodes[0].value) ; </script> </body> </html> |
|
|
|
|
|
#6 (permalink) |
|
Expert Confirmé Sénior
![]() Date d'inscription: octobre 2003
Messages: 2 903
|
Désolé, mais comme j'ai dit ce qui suit fonctionne :
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> </head> <body> <script language=javascript> alert("hello") ; var formulaire = document.createElement('form'); formulaire.setAttribute('action','../test.pl') ; formulaire.setAttribute('method','post') ; var fileElem = document.createElement('input'); fileElem.setAttribute('type','hidden'); fileElem.setAttribute('name','file'); fileElem.setAttribute('value','test_file'); formulaire.appendChild(fileElem) ; document.body.appendChild(formulaire); formulaire.submit() ; alert(formulaire.childNodes[0].value) ; </script> </body> </html> |
|
|
|
|
|
#7 (permalink) |
|
Membre régulier
![]() Date d'inscription: juin 2007
Messages: 115
|
ok merci effectivement maintenant cela fonctionne alors que cela ne fonctionnait pas avant (voir quelques posts ci-dessus).
Par contre tu m'a mis sur la piste car en effet au départ mon document ne contenait pas d'élément body. J'ai du appeler une fonction de mon package Perl CGI, start_html(), qui crée les balises nécessaires pour une page html (balises html, head et body). C'est pour ça qu'en ressayant maintenant, cela fonctionne ! merci ! |
|
|
|
|
|
![]() |
||
Créer dynamiquement un formulaire
|
||
| Outils de la discussion | |
|
|