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 :

Jquery $.getJSON et Symfony [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Ingénieur d'études et de développement
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur d'études et de développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut Jquery $.getJSON et Symfony
    Bonjour,

    je souhaite récupérer des données grâce à Json et Jquery de façon asynchrone. Ma méthode fonctionne très bien en développement Php classique, mais je n'arrive pas à la faire fonctionner avec Symfony.

    Voici comment je procède:

    routing.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jsonLoad:
      url: /jsonLoadProject/:project_id/:jsoncallback
      param: {module: project, action: jsonLoad}
    actions.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function jsonLoad(sfWebRequest $request) {   
        $project_id = $request->getParameter('project_id');
            $release = array();
            $releases = Doctrine_Core::getTable('Rel')->getReleaseByProject($project_id);
     
            foreach ($releases as $rel) {
                $release[] = array("id" => $rel->getId(), "name" => $rel->getName());
            }
     
            $this->response = $request->getParameter('jsoncallback') . "(" . json_encode($release) . ")";
        }

    jsonLoadSuccess.php


    J'appelle la fonction getJSON avec Jquery:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.getJSON('jsonLoadProject/'+ id +'/?',function(data){ //du code}

    Je ne sais pas si ma façon de passer en paramètre l'id du projet peut interférer avec la fonction de callback, mais j'obtiens une erreur 500.

    Merci de votre aide.

  2. #2
    Membre très actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Par défaut
    Salut,
    est-ce que tu pourrais donner plus de détails par rapport à ton erreur 500 parce que je ne sais pas à quel niveau ton code ne marche pas.

    mais déjà avec ce que tu a mis je vois deux probables fautes par rapport à symfony,
    - ton action doit commencer par 'execute' n'est-ce pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public function executeJsonLoad(sfWebRequest $request) { //...
    -et dans l'url que tu appelles il se peut que symfony n'aime pas le '?' entant que valeur pour le 2nde paramètre, essayes de le coder pour url ou de passer une valeur différente pour voir si c'est ça qui coince ou autre chose

    Si en corrigeant ça il continue à te donner une erreur 500, postes le détail du message d'erreur

    bon code

  3. #3
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Même remarque avec juste une information.

    L'erreur 500 est une erreur interne du serveur. Je pense que cela provient du ? dans l'url.

    Questions supplémentaire. Ton code est-il exécuté partiellement dans la fonction executeJsonLoad() ? Essaie de placer un die("truc"); pour voir si tu passe par la fonction, à mon avis, tu n'arrives même pas dans le contrôleur.

  4. #4
    Membre éprouvé
    Ingénieur d'études et de développement
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur d'études et de développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Bonjour,

    -_-' en effet j'ai oublié le execute devant ma fonction - cela m'arrive tout le temps

    J'ai changé mon javascript pour utiliser une fonction équivalente:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     $.ajax({
                        url: 'jsonLoadProject/'+id,
                        dataType: 'json',
                        success: function(data){
                            //success
                            }
                        }
                    });
    Ma nouvelle route :

    routing.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jsonLoad:
      url: /jsonLoadProject/:project_id
      param: {module: project, action: jsonLoad}
    Désormais je fais le echo de ma variable dans le controlleur, la vue est créée mais ne sert à rien:

    actions.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo json_encode($release);

    Bref, ça fonctionne je posterai à la suite de ce message si j'arrive à faire fonctionner la méthode getJson.

    Merci. A+

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu peux ne pas générer de vue par un sfView::none.

    Et tu seras parfait alors

    Bonne chance.
    Michel

  6. #6
    Membre très actif Avatar de polkduran
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 155
    Par défaut
    si tu renvoies du json généré dans l'action tu peux éviter de créer un template seulement pour faire un echo $mon_json;

    symfony te propose des méthodes pour renvoyer du texte et ne pas passer par un template,
    moi je fais comme ça pour renvoyer du json

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    public function executeGetJson(sfWebRequest $request){
        //..... je fais mes traitements et tout et tout....
        // j'indique le type de retour de l'entête    
        $this->getResponse()->setHttpHeader('Content-type','application/json; charset=utf-8');
     
        // et je renvoie mon json sans passer par le template
        return $this->renderText(json_encode($output));
     
    }
    j'espère que ça t'aidera
    bon code

  7. #7
    Membre éprouvé
    Ingénieur d'études et de développement
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur d'études et de développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Merci pour votre aide

    tout fonctionne à merveille maintenant

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

Discussions similaires

  1. jquery mobile et symfony
    Par pmithrandir dans le forum jQuery
    Réponses: 3
    Dernier message: 24/06/2011, 10h00
  2. Réponses: 6
    Dernier message: 12/01/2010, 23h22
  3. jQuery vs symfony
    Par bil123 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 12/01/2010, 20h15
  4. jQuery.getJSON() chargement infini
    Par remyli dans le forum jQuery
    Réponses: 11
    Dernier message: 03/12/2009, 12h07
  5. Parser JSON avec $.getJSON jquery adaptation code
    Par MatthieuFourcade dans le forum jQuery
    Réponses: 2
    Dernier message: 22/06/2009, 10h17

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