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 :

Simuler l'envoi d'un formulaire


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Simuler l'envoi d'un formulaire
    Bonjour à tous,

    j'aimerais simuler la même chose que l'envoi d'un formulaire HTML/PHP + le changement de page SANS le formulaire en javascript...

    en temps normal, y aurait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="reception.php">
    <input type="text" name="login" />
    <input type="text" name="pass" />
    <input type="submit" value="Envoyer" />
    </form>
    mais là, faut le faire via un clic <a href> sans ce formulaire...

    Quelqu'un aurait-il une idée ?
    Merci d'avance...


  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Non, le bouton submit suffit, il lance le fichier "action" et transmet au serveur les champs du formulaire...
    De plus, il s'agit de la méthode normale, rien n'est simulé...
    Enfin, si tu ne souhaites pas utiliser le bouton submit, tu peux effectivement utiliser un lien mais avec href="#" et onclick="formulaire.submit".
    Attention, si tu utilises le href, tu iras bien sur la page mais sans transmettre les données.

    EDIT :
    Dans ta balise form, n'oublie pas de préciser method="(post ou get)"
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    par défaut c'est get!
    fais un submit, copie l'url et met le dans le href du lien...

  4. #4
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    oui ça d'accord... mais j'avais précisé qu'il n'y avait pas de formulaire et donc pas du bouton submit...

    J'aimerais ouvrir la page de réception en passant des variables en POST

    J'ai essayé cela avec jQuery :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Envoi</title>
     
    <script type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
    <script type="text/javascript">
    <!--
    function simulation() {
    	$.post(
    		"reception.php",
    		{login:"mon login", pass:"mon password"}
    	);
    }
    // -->
    </script>
    </head>
     
    <body>
     
    <a href="#" title="" onclick="javascript:simulation()">Simulation</a>
     
    </body>
    </html>
    Mon problème avec cette méthode,
    c'est que la page de réception n'est pas affichée/remplacée par la page d'envoi...
    pour le moment elle est seulement chargé en XHR (et visible dans la réponse HTTP avec Firebug)

    Je suis sûr en plus que c'est tout con à faire...

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Je pense que ton plugin boule_de_cristal pour jQuery est défaillant...
    Si tu n'indiques pas dans ton appel ce qu'il faut faire du résultat, il ne se passera effectivement rien...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $.post(
    		"reception.php",
    		{fonction ou instructions à exécuter avec la réponse serveur},
    		{login:"mon login", pass:"mon password"}
    	);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Effectivement, dans mon fonction callback je pourrais dire d'aller (windows.location.replace()) à la page "reception.php". Mais du coup, la page "reception.php" sera exécuté 2 fois coté serveur !!!

    Le truc, c'est que je ne sait pas si la méthode jQuery.post() est la plus adaptée dans mon cas, car il n'y a pas de réel changement/chargement de page avec des paramètres en POST.


  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    En même temps, le submit, t'en a plus trop besoin...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" value="Envoyer" onclick="simulation()" />
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Je ne vois pas l'intérêt d'un <input> dans mon cas... surtout que ton exemple donne la même chose que <a href> !

    D'ailleurs, il faut charger la page avec des paramètres en POST via la balise <a>.

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Désolé, j'étais resté en écran bleu sur autre chose !
    Où est le problème que la page soit exécutée 2 fois ?
    Si c'est pour le traitement fait dans ta page, des variables de session règlent facilement le problème ou mieux, vérifier le tableau POST
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    C'est pas le traitement exécuté 2 fois qui m'embête... c'est que cela me parait bizarre qu'une méthode "propre" n'existe pas !!!

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Effectivement, dans mon fonction callback je pourrais dire d'aller (windows.location.replace()) à la page "reception.php".
    En fait, je crois que tu n'as pas forcément compris l'intérêt de Ajax...
    Si tu fais windows.location.replace(), alors ça ne sert à rien de faire une requête Ajax !
    Le but de la reque^te est précisément de pouvoir faire des traitements côté serveur, de les récupérer et de les utiliser via javascript sans changer de page.
    En revanche, si ta page reception.php ne te renvoie pas les données que tu souhaites, tu peux en appeler une autre...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Si si je t'assures, j'ai tout à fait compris AJAX...
    Sauf que je ne connais rien d'autre que l'utilisation d'AJAX pour envoyer des variables en POST.

    De plus un window.location.replace ne gère pas l'HTTP POST.

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ne crois-tu pas que dans ton cas, des variables de sessions peuvent être plus adaptées que des post ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Bon, le plus simple est que je t'explique le pourquoi...
    en fait, j'ai développé un back-office multi-utilisateurs pour leur permettre d'administrer leur site Web... Juste que là, rien de plus normal. Sauf, que le site Web utilise le module phpMyVisites 2.3 pour les stats. Il doit donc être consultable par les admins...
    Pour cela, je ne souhaite pas qu'ils aient a ressaisir les identifiants PHPMyVisites (puisqu'ils sont déjà loggué dans le back-office) J'essaye donc de faire en sorte qu'ils n'aient qu'à cliquer sur le bouton "Statistiques" pour s'authentifier (en fond de tache) ET afficher PhpMyVisites.

    Tu comprends ?

Discussions similaires

  1. Simuler un envoie de formulaire
    Par s6t6n dans le forum Langage
    Réponses: 8
    Dernier message: 23/10/2013, 23h21
  2. Simulation d'envoi de formulaire. Des conseils?
    Par Lady dans le forum Général Java
    Réponses: 3
    Dernier message: 25/06/2012, 12h09
  3. Simuler l'envoi d'un formulaire
    Par Oberown dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/04/2009, 16h45
  4. Réponses: 3
    Dernier message: 27/11/2004, 16h23
  5. [struts ] pb avec l'envoie d'un formulaire
    Par njac dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/06/2004, 14h29

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