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 :

Reception de données avec ajax


Sujet :

jQuery

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut Reception de données avec ajax
    Bonjour/ bonsoir,

    J'ai jusqu'à présent développé une application en PHP. Un simple formulaire qui envoie des données à un fichier tiers, qui fait appel lui-même à une méthode (classe) Ce qui donne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($_POST['validNewProd'])) {
        $gestion_products->ajoutProduit_fiche($_POST);
        echo Common_functions::$message;
    }
    En PHP seul, ce code est fonctionnel.
    Je rajoute maintenant une couche de java-script qui envoie les données en ajax à ce même fichier. Le problème qui se pose est que '$_POST['validNewProd']' n'est plus reconnu.
    Ma volonté est d'essayer de garder l'application fonctionnelle si java-script est désactivé (dégradation élégante). Comment faire en sorte alors de conserver ces deux aspects sur ce même fichier ? (ou d'une autre manière)
    Merci,

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Ce qu'on voit ici c'est ton code PHP qui ne nous aidera pas à trouver l'erreur. Montre nous ton code Javascript et HTML concerné.

    A+.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Ok, j'aurais dû poster dans le forum jquery alors.
    Le formulaire:
    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
    <form name="addProduct" id="addProduct" method="post" action="file.php" target="_blank">
    ...
    <label for="famille">Famille de produits</label>
    ...
    <select name="famille" id="famille" title="famille">
      <option selected="selected">Choisissez une famille</option>
      <option>- - - - - - - - - - - - - - - - -</option>
      <option value="1">Baguettes</option>
      <option value="2">Pains</option>
      <option value="3">Pains spéciaux</option>
    ...
    </select>
    ...
    <label for="nameProd">Nom du produit *</label>
    ...
      <input name="nameProd" id="nameProd" title="Un nom" value="" type="text">
    ...
    <label for="descript">Description du produit</label>
    ...
    <textarea name="descript" cols="30" rows="5" id="descript"></textarea>
    ...
      <input name="validNewProd" id="validNewProd" value="Enregistrer le produit" type="submit">
    ...
    </form>
    Le java-script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $(function (){
        $('#validNewProd').click(function(){  
            if(validateAddProduct()){ //Si les données sont bien valides (fonction tiers)
                var famille = $('#famille').val();
                var nom = $('#nameProd').val();
                var descript = $('#descript').val();
                $.post('file.php', {famille: famille, nameProd: nom, descript: descript}, function(data){
                    alert(data);
                });
            }
           return false; 
        });
    });
    Data est vide si je laisse le fichier PHP en l'état. Mais si je supprime la condition, le retour s'effectue bien. Merci,

  4. #4
    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
    tu envoies direct un json ?
    faut peut petre le serializer non ?
    sinon au niveau du format

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $.post('file.php', {"famille": famille, "nameProd": nom, "descript": descript}
    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 !

  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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Le problème qui se pose est que '$_POST['validNewProd']' n'est plus reconnu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $.post('file.php', {famille: famille, nameProd: nom, descript: descript}, function(data){
        alert(data);
    });
    Mouais... c'est effectivement étonnant qu'un paramètre que tu n'envoies pas ne soit pas reconnu...
    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 Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Ton problème est tout à fait normal: Lorsque tu fais une requête AJAX, tu n'envoies QUE les données que tu as mises dans ta liste de paramètezs. Or, dans ces données, "validNewPost" ne figure pas dedans, ce qui pose problème pour ta page PHP. Une solution serait de rajouter un "validNewPost" pouvant contenir n'importe quoi à ta liste de paramètres, pour que ta condition soit vérifiée

  7. #7
    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
    ou de serializer le form pour transmettre toutes les données ...
    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 !

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    ou de serializer le form pour transmettre toutes les données ...
    Ca serait la meilleure solution, mais en écrivant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert($('#addProduct').serialize());
    J'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    famille=4&nameProd=croissants&descript=+++++++++++++++++++++++++++++
    Le bouton n'est pas pris en compte... Et ce n'est pas la première fois que je remarque ça avec cette fonction (à moins que je m'y prenne mal)
    merci,

  9. #9
    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
    le bouton ???
    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 !

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Autant pour moi, selon la doc concernant .serialize(), les boutons type 'submit' ne sont pas pris en compte... Mais du coup et par rapport à mon problème, comment puis-je employer cette fonction alors que j'ai quand même besoin de cette donnée pour le fonctionnement du fichier PHP ? (merci supersnail et bovino)
    merci,

  11. #11
    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
    quel interet de prendre un bouton en compte ???
    pour savoir lequel à été cliqué ??? si tu as plusieurs forms sur la page pointant sur la même page d'action ...

    utilise un champs hidden ?
    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 !

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    si tu as plusieurs forms sur la page pointant sur la même page d'action ...
    c'est à peu près ça... Dans le fichier PHP, j'ai plusieurs actions possibles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Pour la création d'un nouveau produit
    if (isset($_POST['validNewProd'])) {
    $gestion_products->ajoutProduit_fiche($_POST);
    echo Common_functions::$message;
    }
     
    //Pour l'update d'un produit
    if (isset ($_POST['update_btn'])) {
    ...
    }
    D'où mon insistance sur ce foutu bouton... Il faut bien que je sache, même par ajax, lequel a été utilisé.

  13. #13
    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
    sur le onclick de tes boutons submit
    mets une value du bouton dans un champ hidden tu feras ton routage en php sur un test sur le value du champs hidden ...
    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 !

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Ok, merci à vous tous.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/05/2011, 17h47
  2. [AJAX] Acces aux données avec ajax dans une fonction javascript
    Par Sidi-Bou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2008, 12h04
  3. InfoPath envoie et reception de données avec base SQL
    Par fanfan49 dans le forum InfoPath
    Réponses: 2
    Dernier message: 05/06/2007, 15h44
  4. Réponses: 3
    Dernier message: 21/11/2006, 14h28
  5. Réponses: 4
    Dernier message: 02/06/2005, 13h08

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