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

jQuery Discussion :

Effectuer une requête en POST [AJAX]


Sujet :

jQuery

  1. #1
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut Effectuer une requête en POST
    Bonjour à tou.te.s,

    Un problème de débutant, vraiment : j'ai beau lire et relire les docs disponibles, je n'arrive pas à faire fonctionner ce petit programme (ajax.php) :
    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
    17
    18
    19
    20
    21
    <?php
    if (isset($_POST)) { 
     $lien= $_POST[lien];
     echo $lien;
    } 
    ?>
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
    function envoi()
    {
      $.post("ajax.php",
      {lien: "www.lienpérimé.fr"})
    }
    </script>
    </head>
    <body>
    <button  onClick="envoi()">envoi</button>
    </body>
    </html>

    Je voudrais qu'il m'affiche "www.lienpérimé.fr"
    1 - $.post a les deux arguments obligatoires.
    2 - le traitement de la requête est faite sur la même page, et non un fichier externe, mais je pense que c'est licite. Alors ?

    Merci de votre aide

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    j'ai beau lire et relire les docs disponibles,
    (...)
    1 - $.post a les deux arguments obligatoires.
    Sûrement que tu n'as pas lu la bonne : jQuery.post(), à voir les exemples avant de continuer.

  3. #3
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    ben je trouve ça comme exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Request the test.php page and send some additional data along (while still ignoring the return results).
    $.post( "test.php", { name: "John", time: "2pm" } );
    Je ne vois pas la différence avec mon code ?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Certes mais tu en fais quoi de ton retour ?

    On trouve aussi ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Alert the results from requesting test.php with an additional payload of data (HTML or XML, depending on what was returned).
    $.post( "test.php", { name: "John", time: "2pm" })
      .done(function( data ) {
        alert( "Data Loaded: " + data );
      });

  5. #5
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Mais en retour ce doit être le bout de code en php en haut de page qui doit juste m'afficher quelque chose, non ?

  6. #6
    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 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Tu as un souci de compréhension de la chronologie du déroulement de l'ajax ...

    To echo POST n'intervient jamais lors du premier chargement car il n'y a pas de post
    Tu n'exploites pas le retour de ton ajax sur la page, un ajax ne recharge pas la page, il execute la page appelée coté serveur.

    Regarde plutot en console dasn l'onglet xhr, tu y verras bien la réponse ajax (l'echo )
    mais tu n'en fait rien ...
    tu dois évoquer le done ou le success ...
    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 !

  7. #7
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Tu as un souci de compréhension de la chronologie du déroulement de l'ajax ...

    To echo POST n'intervient jamais lors du premier chargement car il n'y a pas de post
    ça, j'avais compris

    Citation Envoyé par SpaceFrog Voir le message
    Tu n'exploites pas le retour de ton ajax sur la page, un ajax ne recharge pas la page, il execute la page appelée coté serveur.
    c'est là que je bloque ! pourquoi mon bout de code php ne fait rien ? car la page s'appelle elle-même, mais côté serveur, non ?
    En fait l'appel appelait au départ un script php différent, chargé d'inclure les liens défectueux dans une BDD. Mais comme ça ça ne fonctionnait pas, j'ai décidé de tester chaque étape une par une en commençant par la 1ere, l'envoi.
    Si je transforme mon bout de code en suivant l'exemple qu'on m'a donné plus haut de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function envoi()
    {
      $.post("ajax.php",
      {lien: "www.lienpérimé.fr"})
      .done(function( data ) {
        alert( "Data Loaded: " + data );
      });
    }
    l'alerte le renvoie ceci :
    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
     
    Data Loaded:www.lienpérimé.fr
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
    function envoi()
    {
      $.post("ajax.php",
      {lien: "www.lienpérimé.fr"})
      .done(function( data ) {
        alert( "Data Loaded: " + data );
      });
    }
    </script>
    </head>
    <body>
     
    <button  onClick="envoi()">envoi</button>
     
    </body>
    </html>
    Je ne comprends pas non plus pourquoi le code lui-même fait partie des data...

  8. #8
    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 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Tu fais un test isset sur le post
    mais pas de else ... donc le reste du code est envoyé à chaque fois
    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 !

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Je ne comprends pas non plus pourquoi le code lui-même fait partie des data...
    Tu n'as pas de clause ELSE dans ta page, donc tout est envoyé !

    Essaie avec ce fichier basique :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
    header('Content-type: text/html; charset=UTF-8');
    if( $_POST){
      if (isset( $_POST['lien'])){
        $lien = $_POST['lien'];
        echo '<span style="color: #080">' .$lien .'</span>';
      }
      else {
        echo '<span style="color: #F00">Paramètre érroné !</span>';
      }
      // quitte sinon faire un else
      exit;
    }
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title>Test Ajax</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script> 
    function envoi(param) {
      const url = "<?php echo basename(__FILE__) ?>";
      const dataRequete = {};
      dataRequete[param] = "www.lienpérimé.fr";
      $.post(url, dataRequete)
        .done(function(data) {
          $("#reponse")
            .html(data);
        });
    }
    </script>
    </head>
    <body>
    <!-- c'est pas jQuery mais bon ! -->
    <button  onclick="envoi('lien')">Envoi -> lien</button>
    <button  onclick="envoi('autre')">Envoi -> autre</button>
    <div id="reponse"></div>
    </body>
    </html>

  10. #10
    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 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Le else doit être plus englobant et contenir le reste du code de la page vu que l'appel ajax se fait sur la même page que celle qui contient l'appel 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 !

  11. #11
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Merci à tous.

    Efficaces et pédagos : j'ai l'impression d'être moins bête....
    Bonne journée à tous !

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

Discussions similaires

  1. [Wamp] Débutant en php : problème avec xampp
    Par Alphonse Capriani dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 30/01/2011, 17h05
  2. [AJAX] AJAX & Session php problème.
    Par prosciuto dans le forum AJAX
    Réponses: 9
    Dernier message: 09/04/2009, 12h17
  3. [AJAX] Librairie PHP-EXT : Problèmes de Listeners
    Par cKmel dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/12/2008, 09h58
  4. [SOAP] [WSDL] [PHP] Problème création du fichier WSDL (Débutant)
    Par Guybrush113 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/09/2007, 12h45
  5. [AJAX] xml + php / javascript,problèmes de compréhension
    Par AsQuel dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/11/2006, 22h25

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