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

Symfony PHP Discussion :

Retour de donnée ajax [3.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Par défaut Retour de donnée ajax
    Bonjour à tous,

    J'ai un petit soucis avec mon projet, je cherche à concaténer un string avec une donnée Json dans un {{ asset() }} reçu avec une requête AJAX et changé d'image en fonction d'un résultat, sauf ma variable est inexistante, après plusieurs tentatives, aucun succès, auriez vous une solution pour moi, svp ?

    voici mon code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
     
      $(function() {
          $("#button_submit").on('click', function(e){
            e.preventDefault();
            let formData = $('#ajaxResquest').serialize();
              $.post({
                url: '{{path('etiquette_energie_calcul')}}',
                data: formData,
                dataType: 'json',
                success: onSuccess,
                error: onError,
              });
          });
        });
     
        function onSuccess(data) {
     
          conso_totale = jQuery.parseJSON(data.consototale);
          $('#conso_totale').val(conso_totale);
     
          emission_totale = jQuery.parseJSON(data.emissiontotale);
          $('#emission_totale').val(emission_totale);
     
          //classe_conso = jQuery.parseJSON(data.classe_conso);
          $('#class_conso').val(data.classe_conso);
     
          $('#class_emission').val(data.classe_emission);
     
         image_conso = JSON.stringify(data.image_conso);
     
          $('#etiquette_conso').attr('src', '{{ asset('bundles/abcingetiquetteenergie/img/etiquettes/' ~ image_conso ~ '') }}');
     
        }
    Erreur :
    Variable "image_conso" does not exist.
    image_conso est inexistante dans mon code Jquery, mais dans un console log j'obtiens bien un string je ne comprends pas ce qui se passe.

  2. #2
    Membre éclairé
    Avatar de fenrir0680
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Billets dans le blog
    2
    Par défaut
    Salut,

    Dans ta fonction onSuccess, un petit
    nous permettrait dans voir les valeurs de retour de ta fonction ajax.

    Après si "data.image_conso" n'existe pas, c'est qu'il y a peut-être un problème dans ton controller.
    Peut-on voir le code de ton controller symfony qui gère ta requête ajax?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Par défaut
    Salut, merci pour ton retour,

    Console.log(data)
    Object { consototale: 30.67, emissiontotale: 0.4, classe_conso: "A", classe_emission: "A", image_conso: "etiquette_conso_A.png", image_emission: "etiquette_emission_A.png" }

    Par contre, je me suis rendu compte de quelques choses, lorsques j'envois ma requête, dans le profiler, je n'envois pas de donnée relative au images, serait-ce pour cela que lorsqu 'il renvoie la reponse Json, il n'arrive pas à détecter "image_conso ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Par défaut
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    /**
         * @Route("/application/calcul",
         *     name="etiquette_energie_calcul"
         * )
         *
         * @param Request $request
         * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
         */
        public function Calculs(Request $request)
        {
    $consototale = 25; 
     
        if($consototale <=50){
            $classe_conso = "A";
            $image_conso = "etiquette_conso_A.png"; 
     
          } elseif($consototale <= 90 AND $consototale > 50 ) {
            $classe_conso = "B";
            $image_conso = "etiquette_conso_B.png";
     
          } elseif($consototale <= 150 AND $consototale > 90 ) {
            $classe_conso = "C";
            $image_conso = "etiquette_conso_C.png";
     
          } elseif($consototale <= 230 AND $consototale > 150 ) {
            $classe_conso = "D";
            $image_conso = "etiquette_conso_D.png";
     
          } elseif($consototale <= 330 AND $consototale > 230 ) {
            $classe_conso = "E";
            $image_conso = "etiquette_conso_E.png";
     
          } elseif($consototale <= 450 AND $consototale > 330 ) {
            $classe_conso = "F";
            $image_conso = "etiquette_conso_F.png";
     
          } elseif($consototale <= 590 AND $consototale > 450 ) {
            $classe_conso = "G";
            $image_conso = "etiquette_conso_G.png";
     
          } else {
     
            $classe_conso = "H";
            $image_conso = "etiquette_H.png";
          }
        }

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 61
    Par défaut
    up

  6. #6
    Membre éclairé
    Avatar de fenrir0680
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Billets dans le blog
    2
    Par défaut
    Salut,

    Déjà on voit que ton objet data contient bien image_conso,
    donc apriori ton problème ne vient pas de ton controller qui retourne bien tes données.
    Après en relisant ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          image_conso = JSON.stringify(data.image_conso);
     
          $('#etiquette_conso').attr('src', '{{ asset('bundles/abcingetiquetteenergie/img/etiquettes/' ~ image_conso ~ '') }}');
    je ferais un petit console.log(image_conso) entre ses deux lignes pour m'assurer que image_conso retourne bien quelque chose.

    Et dernière remarque ton {{ asset('bundles/abcingetiquetteenergie/img/etiquettes/' ~ image_conso ~ '') }} est géré par twig si je ne me trompe?
    Du coup ta variable javascript image_conso n'est pas connu côté serveur.
    Pour palier ce problème, soit dans ton controller tu retourne l'adresse complète de ton image et tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#etiquette_conso').attr('src', image_conso);
    ou tu écris direct un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#etiquette_conso').attr('src', 'path/to/my/picture/' + image_conso);

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

Discussions similaires

  1. Problème de retour de données
    Par Spinoza23 dans le forum Oracle
    Réponses: 22
    Dernier message: 08/02/2007, 08h50
  2. [POO] Retour de données par une fonction (return)
    Par webrider dans le forum Langage
    Réponses: 6
    Dernier message: 26/08/2006, 21h49
  3. [VS2003:c#]Retour de données de fille vers mére
    Par nutball dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/08/2006, 14h19
  4. Réponses: 2
    Dernier message: 30/09/2005, 15h48

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