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 :

Exécution d'une page php lors d'un événement onClick (de manière invisible)


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut Exécution d'une page php lors d'un événement onClick (de manière invisible)
    Bonjour à tous,

    Dans une template d'un hébergeur de forum, j'ai pu ajouter un événement onClick sur le boutton d'envoi de messages.

    Si je mets un:
    dans cet événement, mon message d'alerte s'affiche correctement.

    Maintenant, j'aimerai qu'une page php soit exécutée en lieu et place de ce message d'alerte, et ce de manière invisible par l'utilisateur (il s'agit d'un petit outil statistique, qui ne doit pas interférer le surf de l'utilisateur).

    Et c'est là où je coince.

    Avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    opener.location.href='LIEN_DE_MA_PAGE_PHP'
    ma page php est bien éxécutée. Seulement l'utilisation de 'opener' fait qu'une nouvelle page de navigateur s'ouvre (ce que je ne veux pas).

    Par contre, avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.location.href='LIEN_DE_MA_PAGE_PHP'
    la page n'est pas éxécutée.

    Auriez vous une piste?

    Merci d'avance.

    Cordialement,

    Benjamin

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    il va te falloir soit ajouter un iframe caché ...
    ou utiliser ajax
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonsoir SpaceFrog,

    Merci pour ta réponse.

    Concernant Ajax, cela ne s'imposerait pas uniquement si je souhaite exécuter une commande php directement dans le javascript?
    Concernant mon cas, je ne souhaite pas forcer une telle commande.
    Ce que j'aimerai, c'est exécuter un script php, qui est lui bien et bel côté serveur.

    Enfin, j'avais bien pris connaissance d'Ajax avant de poster mon message, mais je pensais pouvoir m'en passer.

    Concernant les iframes cachés, je t'avouerai que je ne vois pas de quoi tu parles.
    Je vais me renseigner là dessus, merci pour la piste.

    Bonne soirée,

    Benjamin

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonjour,

    Je me suis donc renseigné sur les iframes cachés.

    J'imagine que ce que tu voulais me proposer, c'était, lors de l'événement onClick, faire un update sur ce frame.
    L'idée me parait très intéressante.

    Malheureusement je n'arrive pas à a mettre en application.

    Pour le moment, je travaille sur cet iframe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <iframe id="ifValidPost" height=0 width=0 style="visibility:hidden"></iframe>
    Et, dans l'événement onClick:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javascript:document.getElementById('ifValidPost').src = 'LIEN_DE_MA_PAGE_PHP'
    Je me demande si cela ne vient pas du fait que l'événement est lié à un bouton de 'submit'.

    Cordialement,

    Benjamin

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe name="ifValidPost"  id="ifValidPost" height=0 width=0 style="visibility:hidden" src=""></iframe>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="document.frames['ifValidPost'].location.href='LIEN_DE_MA_PAGE_PHP';"
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Merci SpaceFrog pour les corrections.

    Malheureusement, la page n'est toujours pas exécutée.

    A la fin de mon dernier message, je me demandais si le fait que le bouton soit de type 'submit' ne pouvait pas interférer le update.
    Qu'en penses tu?

    Cordialement,

    Benjamin

  7. #7
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Si c'est a exécuté lors du clic sur submit, tu peux très bien executer ton traitement dans la page cible de ton formulaire.

    Si tu veux que ca valide ton formulaire une fois le script executé, il faut faire ceci :
    Javascript
    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
     
    <script type="text/javascript">
    function doSomething(){
        getXhr();
        xhr.onreadystatechange = function()
          {
          if(xhr.readyState == 4 && xhr.status == 200)
              {
              var reponse = xhr.responseText;
              // Dans ton script tu fais un echo "OK"; si ca a marché.
              return (reponse=="OK");
              }
          }
        xhr.open("POST","script.php",true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        var val1 = "truc";
        var val2 = "truc2";
        xhr.send("param1="+va1+"&param2="+val2);
    }
    /* ROUTINES, OBJET XMLHTTPREQUEST */
    function go(c){if(!c.data.replace(/\s/g,''))c.parentNode.removeChild(c);}
    function clean(d){var bal=d.getElementsByTagName('*');for(i=0;i<bal.length;i++){a=bal[i].previousSibling;if(a && a.nodeType==3)go(a);b=bal[i].nextSibling;if(b && b.nodeType==3)go(b);}return d;}
    var xhr = null;
    function getXhr(){if(window.XMLHttpRequest)xhr = new XMLHttpRequest();else if(window.ActiveXObject){try{xhr = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){xhr = new ActiveXObject("Microsoft.XMLHTTP");}}else{alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...vous n'aurez donc pas accès aux mises à jour, installez un navigateur plus récent (Mozilla Firefox, Internet Explorer 5 [...])");xhr = false;}}
    </script>
    Formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="post" onsubmit="return doSomething();" action="page.php">
    // Elements du formulaire
    <input type="submit" value="Valider"/>
    </form>
    Désolé pour le paté de code j'éspère que ca t'aidera.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonjour ThomasR,

    Je suis d'accord, cela aurait été le plus simple.

    Seulement je travaille sur des templates d'un forum hébergé sur forumactif.
    Elles sont très limitées, et je n'ai pas accès à la template de la page cible.

    Cordialement,

    Benjamin

  9. #9
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Je viens d'éditer mon message précédent.

Discussions similaires

  1. Désactiver une page php lors de l'ouverture d'une popup
    Par medhan dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/11/2013, 03h01
  2. Réponses: 2
    Dernier message: 26/05/2010, 11h13
  3. Réponses: 6
    Dernier message: 29/05/2008, 12h22
  4. [EasyPHP] Exécuter une page PHP
    Par jbenz dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 09/07/2007, 10h39
  5. Réponses: 3
    Dernier message: 14/12/2006, 11h46

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