Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire Cours JavaScript, FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 29/06/2009, 16h52   #1 (permalink)
Membre régulier
 
Date d'inscription: juin 2007
Messages: 115
Par défaut Créer dynamiquement un formulaire

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>
 
Le premier alert me permet de vérifier que le code se lance bien : OK !
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()
mais j'obtiens une erreur : "Erreur*: document.formulaire is undefined" dans la console javascript. Pourtant la variable formulaire existe bien puisque mon dernier alert fonctionne bien !
J'ai également essayé un :
Code :
 document.appendChild(formulaire) ;
pour "lier" le formulaire au document (bien que cela paraisse inutile) et j'ai une erreur :
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"]
Merci de votre aide !!!
fabrice91 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/06/2009, 17h37   #2 (permalink)
Expert Confirmé Sénior
 
Avatar de franculo_caoulene
 
Date d'inscription: octobre 2003
Messages: 2 903
Par défaut

Salut,

Le formulaire n'est pas intégré au document, essaie :
Code :
document.body.appendChild(formulaire)
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 10h02   #3 (permalink)
Membre régulier
 
Date d'inscription: juin 2007
Messages: 115
Par défaut

Citation:
Envoyé par franculo_caoulene Voir le message
Salut,

Le formulaire n'est pas intégré au document, essaie :
Code :
document.body.appendChild(formulaire)
Code :
 
Erreur*: document.body is null
 
En fait il n'y a PAS de document, mon CGI ne crée QUE un objet form...
Il faut que je crée également un élément body et que j'insère ma form dans ce body ?
J'essaye...
fabrice91 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 10h18   #4 (permalink)
Membre régulier
 
Date d'inscription: juin 2007
Messages: 115
Par défaut

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...
fabrice91 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 10h25   #5 (permalink)
Membre régulier
 
Date d'inscription: juin 2007
Messages: 115
Par défaut

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>
 
Le "formulaire.submit()" n'est pas lançé car je vois dans mon navigateur le dernier "alert" du script...
fabrice91 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 11h26   #6 (permalink)
Expert Confirmé Sénior
 
Avatar de franculo_caoulene
 
Date d'inscription: octobre 2003
Messages: 2 903
Par défaut

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>
 
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/06/2009, 15h18   #7 (permalink)
Membre régulier
 
Date d'inscription: juin 2007
Messages: 115
Par défaut

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 !
fabrice91 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS JAVASCRIPTF.A.Q JSTUTORIELS JSSOURCES JSLIVRES JS

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 04h17.


Vos questions techniques : forum d'entraide JavaScript - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.