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 :

Routes non appelées dans JavaScript


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Routes non appelées dans JavaScript
    Bonjour,

    J'ai créé des fonctions jaVascript (Ajax) qui fonctionnaient correctement. Pour une meilleure structuration, j'ai sorti ces fonctions du fichier twig pour les placer dans un fichier .js auquel je fais appel dans twig. Depuis, mes fonctions Ajax ne fonctionnent plus. J'ai l'impression que c'est du au fait que la route n'est pas appelée.

    Voici une parte de mon fichier .twig :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript" src="{{ asset('bundles/hotelsgestionannonces/js/jquery-1.7.min.js') }}"></script>
    <script type="text/javascript" src="{{ asset('bundles/hotelsgestionannonces/js/myFunctions.js') }}"></script>
     
    <script type="text/javascript">  
     window.onload = function()
      {
       ajoutOptionVide('hotels_gestionannoncesbundle_provincetype_departement');
       ajoutOptionVide('hotels_gestionannoncesbundle_provincetype_pays');
      };
    </script>
    Voici ma fonction js correctement exécutée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function ajoutOptionVide(idElem)
      {
       document.getElementById(idElem).options[0] = new Option('', 0, true, true);
      }
    Par contre, dans le même fichier, voici une fonction qui ne s'exécute pas :

    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
    function majPays(idSelect, idDepartement)
      {
        var DATA = "idDepartement="+idDepartement;
     
        $.ajax
    	  ({
    		  type: "POST",
    		  url: "{{ path('province_paysByDepartement') }}",
    		  data: DATA,
     
          success: function(res)
    		   {
    			  var tabRes = res.split('+');
     
            document.getElementById(idSelect).options.length = 0;
    			  document.getElementById(idSelect).options[0] = new Option(tabRes[1], tabRes[0], true, false)        		  
    		   }
    	  });
     
    	  return (false);
      }
    J'ai donc l'impression que c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url: "{{ path('province_paysByDepartement') }}"
    qui est mal interprété.

    Quelqu'un aurait déjà rencontré ce problème?

    Merci d'avance pour vos réponses.

  2. #2
    Membre très actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Par défaut
    tu peut utiliser un input hidden pour sauvgarder l'url:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" id="url" value="{{ path('province_paysByDepartement') }}">
    puis tu le récupère dans ta fonction js:
    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
    function majPays(idSelect, idDepartement)
      {
        var DATA = "idDepartement="+idDepartement;
        var urlPost= $("#url").val();
        $.ajax
    	  ({
    		  type: "POST",
    		  url: urlPost,
    		  data: DATA,
     
          success: function(res)
    		   {
    			  var tabRes = res.split('+');
     
            document.getElementById(idSelect).options.length = 0;
    			  document.getElementById(idSelect).options[0] = new Option(tabRes[1], tabRes[0], true, false)        		  
    		   }
    	  });
     
    	  return (false);
      }

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Merci beaucoup pour ton aide. Entre-temps, je venais de résoudre le problème de la manière suivante :

    Dans mon template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script type="text/javascript" src="{{ asset('bundles/hotelsgestionannonces/js/jquery-1.7.min.js') }}"></script>
    <script type="text/javascript" src="{{ asset('bundles/hotelsgestionannonces/js/myFunctions.js') }}"></script>
     
    <script type="text/javascript">  
     //Initialisation des url's qui seront utilisées dans les requêtes Ajax
     var urlMajPays = "{{ path('province_paysByDepartement') }}";
     var urlMajDepartements = "{{ path('province_departementsByPays') }}";
     
     window.onload = function()
      {
       ajoutOptionVide('hotels_gestionannoncesbundle_provincetype_departement');
       ajoutOptionVide('hotels_gestionannoncesbundle_provincetype_pays');
      };
    </script>
    Dans mon .js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        $.ajax
    	  ({
    		  type: "POST",
    		  url: urlMajDepartements,
    		  data: DATA,
    Cependant, j'ai quand même (encore!) une question. Lorsque j'ai suivi je ne sais plus quel tuto, il était indiqué d'enregistrer les fichiers .js dans "src\nom_site\le_Bundle\Resources\public\js". Ensuite, il fallait effectuer une opération (je ne sais plus laquelle) pour dupliquer ces fichier dans "C:\wamp\www\Symfony\web\bundles\leBundle\js". Pourquoi ces fichiers doivent se trouver dans ces deux repertoires?

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/01/2008, 16h39
  2. appel de javascript impossible dans page appelée en ajax
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/08/2007, 10h48
  3. Réponses: 3
    Dernier message: 18/06/2007, 16h10
  4. [PHP-JS] Appel de javascript dans php
    Par amestoche dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/04/2007, 11h45

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