我有一个非常简单的系统,普通用户,黄金相当于用户。起初它只是在routing.yml中创建了一个路径,我解决了执行动作的函数并返回到同一个视图并完美地工作。现在实现ajax以使流程更快。 当我单击按钮时,运行Ajax,指向控制器的路径指示我执行相关操作,所有操作都已成功执行,但在返回同一视图时,无法正常工作。 Ajax采用错误路径,并由我编程的警报屏幕打印。总而言之,一切正常,直到我必须回到Ajax行动。
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 :(得分:0)
控制器的最后两行没有任何问题,因此不应该出错。唯一可能缺少的是包括JsonResponse类。您是否在控制器顶部获得了以下使用声明?
use Symfony\Component\HttpFoundation\JsonResponse