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 :

Méthode $.post - Envoyer variable vers php


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut Méthode $.post - Envoyer variable vers php
    Bonjour,

    je souhaite envoyer la contenu d'une variable d'un script java vers un fichier php. J'ai essayé la méthode $.post sans succès. J'utilise la librairie jQuery et mon fichier js et php se trouvent dans le même dossier.

    Y a t'il un problème de syntaxe ?

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    $.post("script.php", {ma_variable: 'Ça marche' });


    Coté php, ma variable est retournée comme NULL

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php 
    var_dump($_POST['ma_variable']); 
    ?>

    Existe t'il une autre méthode ?

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    curieux ...
    essaye à tout hasard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.post("script.php", {'ma_variable': 'Ça marche' });
    Mais il n'y a pas de raison que le variable ne soit pas passée ...


    essaye aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php 
    var_dump($_POST); 
    ?>
    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 averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Pas mieux.

    Cela me renvoi :

  4. #4
    Membre du Club
    Homme Profil pro
    Full stack JS
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Full stack JS
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Par défaut
    Quand tu dis que ton fichier php et le fichier js sont dans le même dossier, cela veux dire qu'ils sont à la racine du wwwroot ?
    Parce que c'est l'appel que tu fais en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.post("script.php", {ma_variable: 'Ça marche' });

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Mon fichier index.php, jquery.js, script.js et script.php sont tous dans le même dossier. Ils ne sont pas directement à la racine mais dans le même dossier.

  6. #6
    Membre du Club
    Homme Profil pro
    Full stack JS
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Full stack JS
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Par défaut
    Tu peut commencer par t'assurer dans ton navigateur, que ton post fonctionne correctement( f12 => network).

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Voila ce que ça donne
    Nom : network.png
Affichages : 2658
Taille : 29,8 Ko

    De ce coté cela fonctionne (voir l'encadré)
    Nom : reponse.png
Affichages : 2692
Taille : 19,4 Ko

    Mais coté navigateur j'ai toujours NULL.

  8. #8
    Membre du Club
    Homme Profil pro
    Full stack JS
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Full stack JS
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Par défaut
    Euh, ce coté la c'est le coté navigateur.

    Dans ton $.post tu dois tu dois utiliser une callback pour afficher la réponse du Server.

  9. #9
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Citation Envoyé par a0rk1 Voir le message
    Euh, ce coté la c'est le coté navigateur.
    Pardon je m'exprime mal, je voulais dire sur ma page web en tant que tel (index.php).

    Citation Envoyé par a0rk1 Voir le message
    Dans ton $.post tu dois tu dois utiliser une callback pour afficher la réponse du Server.
    Je pense que l'on progresse, lorsque j'insère ceci :

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $.post("script.php", { ma_variable: 'Ca marche' }, function(data) {
    	alert(data);    
    });

    J'ai bien une fenêtre qui s'ouvre et qui m'affiche string(9) "Ca marche". Par contre sur ma page web j'ai toujours NULL. Comment faire pour que cette valeur soit exploitable dans mon fichier script.php ? (qui est appelée dans ma page index.html).

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 414
    Par défaut
    Le troisième argument, ici function(data) {alert(data);}, représente le retour serveur, data est donc le retour de ce que le script "script.php" affiche. Et s'il l'affiche c'est bien qu'il a récupéré cette valeur...

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Ok mais dans ce cas comment expliquer que sur ma page en tant que telle, var_dump($_POST['ma_variable']); affiche NULL ? Ce que je souhaite c'est que cela affiche string(9) "Ca marche", pas seulement dans ma fenêtre alert. L'idée est de pouvoir utiliser cette variable dans mon fichier script.php

    Quelque chose d'important m'échappe, je débute en php, navré si mes questions sont aberrantes.

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 414
    Par défaut
    Je sais pas ce que tu fais. Comment vérifie-tu que var_dump($_POST['ma_variable']); affiche null ?

    Si tu es débutant commence par faire des exemples basiques. Je te donne le contenu de deux nouveaux fichiers, un fichier html et un fichier php de destination ajax. Pose-les sur ton serveur et fais des tests.

    fichier html
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script> 
    $.post("script_ajax.php", { ma_variable: 'Ca marche' }, function(data) {
            alert(data);    
    });</script> 
    </head>
    <body>
     
    </body>
    </html>

    fichier php de destination de la requête ajax nommé "script_ajax.php"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo json_encode($_POST['ma_variable'].' enfin !!!');
    ?>
    J'ai utilisé json_encode car c'est le standard universel qui permet de retourner également des tableaux. Si on ne l'utilise pas on ne peut renvoyer que des chaines de caractères, il ne serait donc pas indispensable ici, mais bon autant prendre de bonnes habitudes.

  13. #13
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Quand je dis que var_dump($_POST['ma_variable']); affiche null c'est que j'ai inclus ma page php dans ma page principale avec <?php include('script_ajax.php'); ?>. Cela ne peut pas fonctionner, ajax étant asynchrone le script principal est exécuté avant même que la requête ai renvoyé un résultat (si j'ai bien compris).

    Merci pour l'exemple en tout cas.

  14. #14
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 414
    Par défaut
    Bah oui il faut utiliser deux fichiers séparés. Alors résolu ?

  15. #15
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Juste un dernier point: admettons que je veuille avoir un "retour" de cette information sur ma page principale (faire que "Ca marche enfin !!!" s'affiche sur ma page), quel serait le meilleur moyen ?

    J'ai essayé d'inclure ma page php dans la page html mais cela ne peut pas fonctionner.

  16. #16
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 414
    Par défaut
    Pas d'inclusion pour l'ajax, il faut deux fichiers et pis c'est tout.

    Donc dans ta page tu crée un identifiant dans lequel sera inséré le retour de la requête ajax. Et dans ton code javascript tu cible ce sélecteur dans lequel tu inséreras le retour "data" à l'aide de la fonction html() qui comme son nom l'indique permet d'insérer du html.
    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
    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script> 
    $.post("script_ajax.php", { ma_variable: 'Ca marche' }, function(data) {
            $("#retour_ajax").html(data);  
    });</script> 
    </head>
    <body>
    <div>On va y arriver !</div>
     
    <div id="retour_ajax" style="margin-top:2em;"></div>
     
    </body>
    </html>

    Selon les cas tu pourrais choisir de n'insérer que du text (non formaté) ou encore tu pourrais récupérer un tableau à exploiter qui te permettrait par exemple de peupler différentes cibles simultanément dans ta page. Tu peux aussi te servir de toutes les fonctions javascript qui permettent de modifier le DOM (createElement, appendchild etc..) ou l'équivalent avec les raccourcis jQuery ou encore mélanger les deux pour modifier le DOM.

    Bref les possibilités sont vastes.

    Mais tu peux aussi renvoyer du html directement depuis le fichier php, ça fonctionne aussi et c'est bien pratique tant qu'on a qu'une seule cible à peupler au retour ajax (sinon faut passer par json et exploiter les différents éléments du tableau qu'on renverra en php). Un autre exemple :

    script_ajax.php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    //echo json_encode($_POST['ma_variable'].' enfin !!!');
    if(isset($_POST['ma_variable']))
    {?>
    	<div style="width:50%;margin:auto;padding:2em;background:#FC9;color:#666;font-size:2em;font-weight:bold;font-family:Verdana, Geneva, sans-serif;border:2px solid black">
    		<?=$_POST['ma_variable'].' enfin !!!'?>
    	</div>
    <?php } ?>
    C'est magique Ajax

    Prochaine étape, tu crée un bouton qui permet de déclencher la requête ajax sur commande et tu auras la base pour commencer à t'amuser pendant longtemps.

  17. #17
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Par défaut
    Merci beaucoup pour cet exemple qui va me donner du grain à moudre pour pas mal de temps

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

Discussions similaires

  1. [AJAX] $.post variable vers PHP
    Par Toolito dans le forum jQuery
    Réponses: 2
    Dernier message: 06/10/2012, 07h01
  2. Variables vers PHP
    Par cocacola0589 dans le forum Flex
    Réponses: 27
    Dernier message: 21/04/2009, 16h30
  3. [DOM] Passage de variable vers PHP
    Par popovitch130 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 05/07/2008, 22h13
  4. Envoyer données vers PHP
    Par gabychon dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/05/2006, 17h27

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