2015-08-10 2 views
0

У меня очень простая система, в которой обычные пользователи, количество золота для пользователей. Сначала он просто сделал путь в routing.yml. Я обращаюсь к функции, чтобы выполнить действие и вернуться к тому же представлению и отлично работал. Теперь реализуем ajax, чтобы ускорить процесс. , когда я нажимаю на кнопку вверх, запускаю Ajax, указанный путь к контроллеру направляет меня к соответствующему действию, все успешно выполненные, но в момент возврата к тому же представлению не работает. Ajax берет путь к ошибке и был напечатан с помощью экрана Alert, запрограммированного мной. В заключение все работает отлично, пока я не вернусь к действию Ajax.Как вернуть ответ на ajax symfony 2?

listarUsuariosParaAscender.html.twig

//..some code..// 
    <p id="{{ usuario.id }}" >Ascender a Usuario Gold</p> 
    //..some code..// 

    {% block javascripts %} 
     {{ parent() }} 
     <script type="text/javascript" src=" {{ asset('bundles/MICARPETA/js/jquery-2.1.4.min.js') }} "></script> 
     <script type="text/javascript"> 

     $(document).ready(function(e) { 

      $("p").click(function(e){ 
       var id = $(this).attr('id'); 
      $.ajax({ 
           type: "POST", 
           url: "{{ path('ascender_a_gold') }}", 
           data: { 'id' : ' ' + id + ' ' }, 
           error: function(){ 
             alert("Error petición ajax"); 
           }, 
           success: function(data){              

             alert(data); 

           } 
        }); 
      }); 
     }); 
     </script> 

{% endblock %} 

routing.yml

ascender_a_gold: 
    pattern: /admin/ascenderAGold 
    defaults: { _controller: ProyectoAdminBundle:Admin:ascenderAGold } 

AdminController.php

public function ascenderAGoldAction(){ 
     $id = $_POST['id']; 
     $em = $this->getDoctrine()->getManager(); 
     $user = new User(); 
     $roleviejo = new Role(); 
     $rolenuevo = new Role(); 
     $usuario = $em->getRepository('AtajoBundle:User')->findOneUser($id); 
     $roleviejo = $em->getRepository('ProyectoSeguridadBundle:Role')->findByRoleJoinUsuario($id); 
     $rolenuevo = $em->getRepository('ProyectoSeguridadBundle:Role')->findByRole('ROLE_USER_GOLD'); 

     $usuario->setRoles($rolenuevo); 

     $em->persist($usuario); 
     $em->flush(); 

     //Until here everything works well , when I have to return to Ajax , ajax it takes the path of 'error'  

     $data = 'hello'; 

     return new JsonResponse(array('data' => $data)); 
     } 
+0

Осмотрите фактический запрос в сети браузера dev, чтобы узнать статус и что возвращается (если есть). Также задайте 'dataType: 'json'' для' $ .ajax – charlietfl

+0

Почему вы используете '$ _POST' вместо объекта' Request' symfony? – user2268997

ответ

0

В последних двух строках вашего контроллера нет ничего плохого, поэтому не должно быть ошибок. Единственное, что может отсутствовать, это включение класса JsonResponse. У вас есть следующий оператор использования в верхней части вашего контроллера?

use Symfony\Component\HttpFoundation\JsonResponse 
Смежные вопросы