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 :

AJAX et liste déroulante


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 159
    Par défaut AJAX et liste déroulante
    Hello,

    Dans un formulaire je souhaite après avoir sélectionné une valeur dans une liste afficher une info sur la page. Mais rien ne se passe... pas de message rien...

    Dans mon fichier twig j'ai mon formulaire plus du jquery :
    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
    <script type="text/javascript">
     
    $('#nas_appbundle_devis_intervention').on('change', function() {
        var interventionId = this.value;
     
        var DATA = 'interventionId=' + interventionId;
        $.ajax({
            type: "POST",
            url: "{{ path('nasApp_ajouterDevis')}}",
            data: DATA,
            cache: false,
            success: function(data){
    		alert(data);
               $('#resultats_recherche').html(data);
            }
        });    
        return false;
    });	
    </script>
    Ici "interventionId" est bien initialisé puisqu'un simple alert m'affiche bien l'id de l'intervention sélectionné.
    Mon path (nasApp_ajouterDevis) fait référence à l'action du controller qui affiche le formulaire de cette page et enregistre le formulaire en base => l'ensemble fonctionne très bien

    Maintenant dans mon controller je rajouter le code pour récupérer via AJAX l'id de mon intervention avec :
    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
    		//si la requete est de type AJAX
    		if($request->isXmlHttpRequest())
    		{
    					//die;
    			$interventionId = '';
    			$interventionId = $request->request->get('interventionId');
     
    			$em = $this->container->get('doctrine')->getEntityManager();
    			$nbrJours = 'toto';
    			if($interventionId != '')
    			{
     
    				$em = $this->getDoctrine()->getManager();
    				$nbrJours = $em->getRepository('NasAppBundle:Intervention')->find($interventionId)->getNbrJours();			
     
    			}
    			else {
    				$nbrJours = "N/A";
    			}
     
    			return $this->container->get('templating')->renderResponse('NasAppBundle:Devis:ajouter.html.twig', array(
    				'nbrJours' => $nbrJours
    				));
    		}
    Et je me retrouve avec un pop vide !!! Pour rappel dans le jquery de mon fichier twig je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            success: function(data){
    		alert(data);
               $('#resultats_recherche').html(data);
            }
    Ici je devrais afficher dans un "alert" le résultat, mais c'est vide chez moi

    Une idée ? je suis gravement bloqué

    Pour info : même un "die" dans mon controller n'affiche pas de page blanche, alors je ne sais pas comment se comporte AJAX mais s'il passait dans l'action de mon controller et que la request est bien de type xml je devrait avoir une page blanche, non ?

    Merci de votre aide Ju

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 159
    Par défaut
    Le problème est que je ne sais pas a quelle route envoyer la requête AJAX...

    Tout à l'heure je l'envoyais à : nasApp_ajouterDevis => La route qui me permet d'afficher mon formulaire depuis le controller bien sur.
    La je viens de créer une route spécifique rien que pour la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nasApp_nbrJourIntervention:
        pattern: /ajouterDevis/
        defaults: { _controller: NasAppBundle:Devis:nbrJours }
        requirements:
          _method: POST
    Mais il me renvoi la page du devis !!! Au secours .. dans cette route nbrJours est bien l'action du controller Devis qui va être exécuter ? donc cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function nbrJoursAction()
    	{
    		$request = $this->get('request');
    		//si la requete est de type AJAX
    		if($request->isXmlHttpRequest())
    ....
    Pour info je m'aide du tuto suivant : http://j-place.developpez.com/tutori...-symfony2/#LIV

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2012, 17h28
  2. [AJAX] Listes déroulantes
    Par gscorpio dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/12/2006, 09h15
  3. [AJAX] Liste déroulante qui ne s'actualise pas avec XMLHttpRequest
    Par zoom61 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/11/2006, 09h52
  4. [AJAX] Listes déroulantes liées avec Ajax
    Par paupiette dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 16h51
  5. [AJAX] Synchronisation de deux listes déroulantes
    Par Le Rebel dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/03/2006, 23h28

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