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 :

envoi de variables en POST dans un popup


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut envoi de variables en POST dans un popup
    Bonsoir,

    petit nouveau dans le coin, j'espère que mon message n'enfreint aucune règle du forum. Si tel était le cas, je m'en excuse d'avance platement.


    Voici donc mon petit souci :

    J'aimerais envoyer les variables d'un formulaire vers un fichier .php distant, qui n'accepte qu'une méthode "POST".
    Le fichier php distant, lorsqu'on lui envoie les données du formulaire, fait un echo(); de ce que j'aimerais avoir dans un pop-up, qui n'est pour l'instant pas le cas.

    Mon formulaire est bon. Si j'enlève le onclick="pop_it(leform)" du bouton de submit, le fichier distant php donne son résultat correctement... mais dans la fenêtre principale (beurk).


    Voilà ce à quoi je suis arrivé jusque là :
    ----------------
    le formulaire
    ----------------
    Code html : 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
     <form method="post" name="leform" id="leform" action="http://le.fichier.fr/distant/exemple.php" onSubmit="return valider()">
                <fieldset>
     
                  <textarea id="texte" name="texte" tabindex="1" accesskey="t" cols="100" rows="5">Collez votre texte ICI.</textarea>
    <input type="button" name="effaceur" value="Effacer" onClick="javascript:effacer()" tabindex="3" accesskey="e"/>
    <input name="submit" onclick="pop_it(leform)" type="button" accesskey="s" tabindex="2" value="Synth&eacute;tiser"/>
     
     
    <input type="hidden" id="langue" name="langue" value="Français" checked="checked"/>
    <input type="hidden" id="voix" name="voix" value="HA_Benoît" checked="checked"/>
    <input type="hidden" id="volume" name="volume" value="10" checked="checked"/>
    <input type="hidden" id="debit" name="debit" value="1" checked="checked"/>
     
     
                </fieldset>
    </form>

    ----------------
    scripts
    ----------------
    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
    function effacer() {
    	document.forms["kaliform"].texte.value="";
    }
     
    function pop_it(the_form) {
     
       my_form = eval(the_form);
       window.open('./wait.php', "popup", "height=100,width=300,menubar='no',toolbar='no',location='no',status='no',scrollbars='no'");
      my_form.target = "popup";
      my_form.submit(); // on poste le formulaire
    }
     
     
    function valider() {
    	if(document.forms["leform"].texte.value == "") { // Si la valeur du champ est vide, 
    		alert("Merci d'entrer un texte"); // on affiche un message,
    		document.forms["leform"].texte.focus(); // on donne le focus au champ de texte,
        	return false; // et on indique de ne pas envoyer le formulaire.
      	}
    	if(document.forms["leform"].texte.value.length > 2000) {  //pas plus de 2000 caractères
    		document.forms["leform"].texte.value = document.forms["leform"].texte.value.slice(0,499);
    	}
      return true;
    }
    __________________________________________

    wait.php est vide.

    J'ai cru comprendre que le formule magique " my_form=eval(the_form); my_form.submit(); " ne fonctionne plus et qu'il faut utiliser un objet XmlHttpRequest (Ajax) - http://siddh.developpez.com/articles/ajax/ - mais il permet d'ouvrir dans la fenêtre principale, et pas dans un popup...

    Une idée ?

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut Solution
    Salut,

    Bienvenue sur les forums de dvp.com.

    Il manque peu de chose à ton code que tu as récupéré. Surtout de la simplicité

    Vite fait, cette version 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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      </head>
      <body>
    <script language="javascript" type="text/javascript">
    function pop_it(frm) {
       var w= window.open("", "popup", "height=200,width=320,menubar='no',toolbar='no',location='no',status='no',scrollbars='no'");
       frm.target = "popup";
       frm.submit();
    }
    </script>
    <form action="echo.php" method="post" >
    <p>
    Nom : <input type="text" name="nom" maxlength="32" size="12" value="" /><br />
    Prenom : <input type="test" name="prenom" size="32" /><br />
    <input type="submit" onclick="pop_it(this.form);" value="Traitement" /></p>
    </form>
      </body>
    </html>
    et echo.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
        //echo.php
        echo "Hello {$_POST['prenom']}";
    ?>
    Bon dev,

    ERE

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    Merci pour cette réponse rapide ! et efficace !
    Désolé pour l'omission des balises de code !

    Je me suis effectivement un peu perdu dans la complexité...

    Ça fonctionne très bien, à un détail près :

    Le texte qui passe dans la moulinette du fichier php distant perd ses caractères spéciaux. Ils sont tous transformés en points d'interrogations. J'ai cru comprendre que c'est javascript qui fait ce genre d'entourloupette. Et comme vous l'avez certainement compris, le javascript reste un peu du domaine de l'obscur pour moi pour l'instant.

    Je ne vois pas où se trouve le problème d'encodage.

    J'ai lu qu'on pouvait faire un choix automatique grâce à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var y=document.createElement('span');
    y.innerHTML="le texte ici";
    et ce code fonctionne pour mes alertes.

    Voilà ce à quoi je suis arrivé (comment ça j'ai compliqué la chose ? ;o ) :

    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
     
    function pop_it(frm) {
       var winleft=(screen.width-300)/2;
       var winup=(screen.height-100)/2;
       var w= window.open("./wait.php", "popup", "height=100,width=300,left="+winleft+",top="+winup+",menubar='no',toolbar='no',location='no',status='no',scrollbars='no'");
       frm.target = "popup";
     
       frm.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // Ne pas oublier ça pour un POST.
     
       var y=document.createElement('span');
    	y.innerHTML=document.forms["leform"].texte.value;
        frm.send("texte="+y.innerHTML)
     
        frm.submit();
    }
    A ce stade, le texte est bien envoyé, mais les caractères spéciaux sont quand même transformés en "?"

    Je suis sur une mauvaise piste ?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    à partir du code initial, un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form .... target="_blank">
    n'aurait pas suffi ?

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    Bonjour,

    en fait, la présentation de cette page distante est très... épurée.

    20 caractères en tout et pour tout, le reste de la page est blanc et je ne suis pas autorisé à la modifier.

    D'où le fait que je l'affiche dans une fenêtre de 300x100 au centre de l'écran.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par zuger Voir le message
    D'où le fait que je l'affiche dans une fenêtre de 300x100 au centre de l'écran.
    C'est effectivement une raison suffisante

    A+

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Le texte qui passe dans la moulinette du fichier php distant perd ses caractères spéciaux. Ils sont tous transformés en points d'interrogations. J'ai cru comprendre que c'est javascript qui fait ce genre d'entourloupette. Et comme vous l'avez certainement compris, le javascript reste un peu du domaine de l'obscur pour moi pour l'instant.
    Vérifie bien ton encodage des pages: ne serais tu pas en utf-8 côté client et en iso-8859-1 au moment du traitement sur le server ?

    Il faut que l'encodage soit cohérent de bout en bout.

    ERE

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    Et bien...

    côté serveur, je viens encore de vérifier, le logiciel a besoin du utf-8
    de mon côté, la page html est en utf-8 aussi... avec le célèbre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Regarde ici je crois que tu trouveras ton bonheur: http://j-willette.developpez.com/tut...-site-en-utf8/

    ERE

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut


    Merci bien ! Je vais me plonger dans la lecture de ce tuto.

    Le problème initial est résolu en tout cas !

    Merci pour ta précieuse aide !

    A+ pour de nouvelles aventures

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

Discussions similaires

  1. [PHP 5.1] Problème d'envoi de variable par POST
    Par genesia dans le forum Langage
    Réponses: 1
    Dernier message: 20/08/2012, 03h25
  2. Envoi de variable avec incrément dans l'URL
    Par Hybride76 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2011, 14h23
  3. Récupérer des variables POST dans un popup.
    Par devoluti0n dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 04/09/2010, 14h07
  4. Envoi de variables avec POST
    Par oops! dans le forum Flash
    Réponses: 5
    Dernier message: 06/08/2006, 21h14
  5. variables de session dans une popup
    Par erka dans le forum Langage
    Réponses: 7
    Dernier message: 26/11/2005, 19h29

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