我有这个dropdwonlist,这个数字是投票。在下面的代码中,我将控制器的功能放在我管理投票的地方。这可行,路径动作模板;我的问题是,如何在不刷新页面的情况下使用JQuery-AJAX代码做同样的事情?
下拉列表的默认值为votacion.votCalificacion
,这是数据库中投票的值
这是投票的下拉列表:
<form id="post">
<select id="cd-dropdown" class="cd-select">
<option value="-1" selected>{{ voto.votCalificacion }}</option>
<option>-</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select>
</form>
这是管理员管理投票的功能:
public function gestionarVotoAction($pysStr, $votCalificacion)
{
$em = $this->getDoctrine()->getManager();
$pys = $em->getRepository('PYSBundle:Pys')->findPys($pysStr);
$usuario = $this->get('security.context')->getToken()->getUser();
$voto = $em->getRepository('UsuarioBundle:Usuario')->findVoto($usuario, $pys);
if(!$voto)
{
$voto = new Voto($usuario, $pys);
}
if ($votCalificacion == "-")
{
$em->remove($voto);
}
else
{
$voto->setVotCalificacion($votCalificacion);
$voto->setVotFecha(new \DateTime("now"));
$em->persist($voto);
}
$em->flush();
return $this->redirect($this->generateUrl('usuario_pelicula', array('pysStr' => $pysStr)));
}
答案 0 :(得分:1)
以下代码是我的问题的解决方案:
AJAX电话:
$('#cd-dropdown').bind('change', function(){
ajaxVotar($( '#cd-dropdown' ).val(), $('#id-pelicula').val());
});
function ajaxVotar(voto, pelicula)
{
$.getJSON('/app_dev.php/es/user/pelicula/'+pelicula+'/'+voto, function(j){
$('#votacion-media-peli').html(j.media);
});
}
在控制器的函数中,用JSON响应替换html.twig视图渲染:
(...)
$votosPelicula = $em->getRepository('UsuarioBundle:Usuario')->findVotosDePelicula($pys);
$media = self::media($votosPelicula);
$response = new Response(json_encode (array('result'=>$result, 'media' => $media)));
$response->headers->set('Content-Type', 'application/json');
return $response;
答案 1 :(得分:0)
$('cd-dropdown').change(function(){
$.post('path-to-route', {data: $(this).val()}, function(res){
console.log('Done!'); //or whatnot
});
});
我在ajax调用中使用的data
键可能需要更改,具体取决于PHP中的$ _POST var。
答案 2 :(得分:0)
您必须创建一个资源(如php
页面),该资源需要您保存的信息(参数),例如:www.example.com/savevote.php
。然后你像这样使用jQuery
:
$.post("savevote.php", {"votCalificacion": $("#cd-dropdown").val()}, function(returned_data){
// do something with your returned data
});
无论如何,有大量的教程可供您查阅。只是谷歌吧!
祝你好运!