IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Créer dynamiquement un formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    259
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 259
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     document.appendChild(formulaire) ;
    pour "lier" le formulaire au document (bien que cela paraisse inutile) et j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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 !!!

  2. #2
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Salut,

    Le formulaire n'est pas intégré au document, essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.appendChild(formulaire)

  3. #3
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    259
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 259
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Salut,

    Le formulaire n'est pas intégré au document, essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.appendChild(formulaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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...

  4. #4
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    259
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 259
    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...

  5. #5
    Membre très actif
    Inscrit en
    Juin 2007
    Messages
    259
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 259
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <!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...

  6. #6
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Désolé, mais comme j'ai dit ce qui suit fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <!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>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer Dynamiquement un controle dans un sous Formulaire
    Par Nabil54 dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/04/2013, 03h47
  2. [AC-2003] créer dynamiquement un formulaire
    Par patbeautifulday dans le forum VBA Access
    Réponses: 5
    Dernier message: 24/03/2010, 12h32
  3. Réponses: 16
    Dernier message: 24/04/2006, 21h47
  4. Réponses: 4
    Dernier message: 13/05/2004, 13h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo