У меня очень простая система, в которой обычные пользователи, количество золота для пользователей. Сначала он просто сделал путь в 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));
}
Осмотрите фактический запрос в сети браузера dev, чтобы узнать статус и что возвращается (если есть). Также задайте 'dataType: 'json'' для' $ .ajax – charlietfl
Почему вы используете '$ _POST' вместо объекта' Request' symfony? – user2268997