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 :

Résultat QueryBuilder - Requête Ajax avec Symfony2 [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Résultat QueryBuilder - Requête Ajax avec Symfony2
    Bonjour,
    Après plusieurs jours de débogage sans résultats, j’espère trouver les solutions à mon problème sur ce forum.

    Contexte : J'ai souhaité développer une requête Ajax simple d'auto-complétion.

    Pour cela je possède dans un fichier main.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
    function autocomplet() {
    		var keyword = $('#input_searchNom').val();
    		$.ajax({
    			url: Routing.generate('autocomplete', { "keyword": keyword}),
    			type: 'POST',
                success: function(data) {
    				$('#search_list_id').show();
    				$('#search_list_id').html(data);
    				console.log(data);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    console.log(xhr.status);
                    console.log(thrownError);
                }
    		});
    }
    Dans un fichier adminController.php, une fonction :
    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
    function requette_ajaxAction($keyword){
            $em = $this->getDoctrine()->getManager();
            $repository = $em->getRepository('GesceBundle:Researcher');
            $query = $repository->createQueryBuilder('p')
                   ->where('p.nom LIKE :word')
                   ->setParameter('word', '%'.$keyword.'%')
                   ->getQuery();
     
            $researchers = $query->getResult();
     
            if($researchers){
                die($researchers);
            }
            else{
                die("Erreur lors de la requêtte ! ^^");
            }
        }

    Lorsque l'utilisateur entre une lettre dans l'input #input_searchNom, une requête Ajax s'éffectue, à ce moment une liste déroulante doit s'afficher avec la liste des champs correspondant aux résultats de la requette. Cependant je n'arrive pas à faire passer la liste de nom. J'obtien à l'affichage dans la console et dans la vue : "Array"

    Si je remplace $researchers par $researchers[0] j'obtiens : "Journal".

    J'ai donc des données inexploitables ... Je voudrais au moins pouvoir récupérer une liste de nom comme il est prévu, après je m'occuperai de l'affichage.

    Merci d’avance.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            if($researchers){
                $liste = null;
                foreach ($researchers as $researcher){
                    $liste = $liste."<li>".$researcher->getNom()."</li>";
                }
                die($liste);
            }
    La solution comme par enchantement après des jours de galère ... La fatigue

  3. #3
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Je croit que ton souci viens de la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($researchers){
                die($researchers);
            }
            else{
                die("Erreur lors de la requêtte ! ^^");
            }
    1/ la manierre clean est de retourner un Objet Response genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return new Response("Contenu à retourner", 200, ['header'=>'header-value']);
    2/ tu dois formater tes résultats avant des les renvoyer car actuelement $resaercher est une instance de ArrayCollection
    (une casse tête pour ton JS pour la parser)

    un retour type serait un format json par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function requette_ajaxAction($keyword){ 
    //....
    $resultat = array();
     
    foreach($researchers as $researcher) {
        $resultat[] = [
            'id' => $researcher->getId(),
            'name' => $researcher->getName()
        ];
    }
     
    new Response(json_encode($resultat), 200, ['content-type'=>'Application/json'])
    sinon y'a un moyen éléguant pour serialiser les données, jette un oeuil sur jmsyst.com/libs/serializer
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/10/2010, 07h15
  2. [Dojo] Requête AJAX avec paramètre avec DOJO
    Par Tavarez59 dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 19/06/2009, 13h50
  3. [JQuery] Requête ajax avec jQuery
    Par ApheX2 dans le forum jQuery
    Réponses: 3
    Dernier message: 28/08/2008, 22h40
  4. [MooTools] requête ajax avec Mootools
    Par oneTime dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 14/04/2008, 10h50
  5. [AJAX] Résultat de requête Ajax vide sous IE, mais pas sous FF
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2007, 16h18

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