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 :

[Symfony 2] AJAX


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 12
    Points
    12
    Par défaut [Symfony 2] AJAX
    Bonjour,
    je suis entrain de faire un petit système de commentaire mais je suis bloqué puisque rien ne se passe du coté AJAX
    voici ce que j'ai dans le contorleur
    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
    48
     
     public function creerAction($id)
        {
            $video=$this->getDoctrine()
                      ->getManager()
                      ->getRepository('PlatformApplicationBundle:Video')
                      ->find($id);
     
            $commentaire= new Commentaire();
                        $commentaire->setCreatedAt(new \DateTime());
     
            $commentaire->setVideo($video);
     
            $form=$this->createForm(new CommentaireType, $commentaire);
     
            $request = $this->get('request');
     
       //   $form->bind($request);
     
     
            if($request->isXmlHttpRequest())
            {
     if ($request->getMethod() == 'POST') {
     
            if ($form->isValid()) {
     
                $video->addCommentaire($commentaire);
                $em = $this->getDoctrine()->getManager();
                $em->persist($video);
                $em->persist($commentaire);
                $em->flush();
     
     
                $json=json_encode(array(  'video_id' => $id  , 'commentaire'=>$commentaire,));
                $data= new Response($json);
     
                $data->headers->set('Content-type','application/json');
     
               return $data;
            }}
     
         }
     
            return $this->render('PlatformApplicationBundle:TV:commentaire.html.twig',array('form'=>$form->createView(),
        'video_id' => $id,
        'commentaire'=>$commentaire,
                ));
     }
    pour le 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    <script type="text/javascript">
    $(document).ready(function() {
        // Au submit du formulaire
        $('#form').submit( function() {
            var commentaire = $('#platform_commentaire_commentaire').val();
                     $('#commentaire').prepend('</strong> a dit :<br />'+commentaire+'</p>');
    var dataString = 'commentaire='+ commentaire ;
     
                // On fait l'appel Ajax
                       $.ajax({
                    type: "GET",
                    url : "{{ path('platform_commentaire_ajout', {id: video_id}) }}",
                    dataType : 'json',
                    data: dataString,
                    cache: false,
     
     
                   success : function(data){
                        reponse($.map(data, function(objet){
                            return objet;
                        }));
                    }
                })
     
            // On retourne false pour ne pas recharger la page
            return false;
        }); 
     
    });
    et le formulaire avec un petit bloc pour faire le prepend en dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form action="{{ path('platform_commentaire_ajout', {id: video_id}) }}" method="POST" {{ form_enctype(form) }} id="form">
       {{ form_widget(form) }}
     
        <input type="submit" />
    </form>
    <div id="commentaire">
        <p class="last pair first" id="com_1"><strong>BN</strong> a dit :<br />Coucou !  Je m'appelle BN et je suis un BN, et toi, tu fais quoi dans la vie ?</p>
     </div>
    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    Dsl mais le premier bout de code est déjà pas TOP !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $video=$this->getDoctrine()
                      ->getManager()
                      ->getRepository('PlatformApplicationBundle:Video')
                      ->find($id);
     
            $commentaire= new Commentaire();
                        $commentaire->setCreatedAt(new \DateTime());
    Qu'est ce qui se passe si l'id n'existe pas ?
    puis pourquoi instancier un new Commentaire avant de savoir si le form est valide ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Bon,
    j'en ai besoin de l'id en effet j'ai une fonction getVideoToPlay qui retourne un array j'ai eu un problème pour la récupération de l'id donc j'ai testé avec find($id) même avec l'instanciation après le test rien ne se passe l'erreur que firebug retourne JSON.parse: unexpected character.Du coté AJAX je ne suis pas sûr que j'ai utilisé la bonne manière

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    Ouai ouai ....

    Montres nous la réponse que tu captes dans ton navigateur ?

    Tu dois avoir un problème avec la serialisation Json de ton Commentaire.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Boonjour,
    c'est ce que j'a lors de la soumission c'est cette réponse

Discussions similaires

  1. [2.x] symfony et ajax
    Par asmasamasim dans le forum Symfony
    Réponses: 3
    Dernier message: 26/05/2013, 22h33
  2. [1.x] action symfony avec ajax
    Par elavoine dans le forum Symfony
    Réponses: 3
    Dernier message: 30/08/2010, 19h15
  3. Réponses: 11
    Dernier message: 06/07/2010, 20h35

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