symfony2 ajax用户搜索

时间:2015-03-03 07:09:38

标签: ajax symfony search

我正在开发一个Symfony2项目,我有一个用户实体,我需要一个ajax搜索栏来搜索我的用户。问题是,在我的ajax响应中,控制器由于某种原因返回数据库中的所有用户。

  1. JS。

       $(".loading").hide();
       $("#form_recherche").submit(function(){
           $(".loading").show();
           var motcle = $("#acteurrecherche").val();
           var DATA = 'motcle=' + motcle;
           $.ajax({
               type: "POST",
               url: "{{ path('myapp_acteur_rechercher')}}",
               data: DATA,
               cache: false,
               success: function(data){
                   $('#resultats_recherche').html(data);
                   $(".loading").hide();
               }
           });
           return false;
       });
    
  2. 控制器

    public function rechercherAction()
    {
    
    $request = $this->get('request');
    
    if($request->isXmlHttpRequest())
    {
        $motcle = '';
        $motcle = $request->request->get('motcle');
    
        $em = $this->container->get('doctrine')->getEntityManager();
    
        if($motcle != '')
        {
            $qb = $em->createQueryBuilder();
    
            $qb->select('a')
                ->from('UtilisateursUtilisateursBundle:Utilisateurs', 'a')
                ->where("a.username LIKE :motcle")
                ->orderBy('a.username', 'ASC')
                ->setParameter('motcle', '%'.$motcle.'%');
    
            $query = $qb->getQuery();
            $acteurs = $query->getResult();
        }
        else {
            $acteurs = $em->getRepository('UtilisateursUtilisateursBundle:Utilisateurs')->findAll();
        }
    
        return $this->container->get('templating')->renderResponse('CodeRouteBackBundle:Utilisateur:Utilisateurs.html.twig', array(
            "per"=>$acteurs
        ));
    }
    else {
        return $this->utilisateurAction();
    }
    }
    

1 个答案:

答案 0 :(得分:0)

检查您是否在控制器中获取后置参数值。

试试下面的jquery代码

$(".loading").hide();
$("#form_recherche").submit(function() {
    var motcle = $("#acteurrecherche").val();
    $(".loading").show();
    $.ajax({
        type: "POST",
        data: {
            motcle: motcle
        },
        url: "{{ path('myapp_acteur_rechercher')}}",
        cache: false,
        success: function(data) {
            $('#resultats_recherche').html(data);
            $(".loading").hide();
        }
    });
    return false;
});