Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2-Ajax搜索_Php_Ajax_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony2-Ajax搜索

Php Symfony2-Ajax搜索,php,ajax,symfony,doctrine-orm,Php,Ajax,Symfony,Doctrine Orm,我正在从事一个Symfony2项目,在这个项目中,我有一个用户实体,我需要一个ajax搜索栏来搜索我的用户。 问题是,在我的AJAX响应中,出于某种原因,控制器返回数据库中的所有用户 js 控制器 use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Respon

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

js

控制器

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;

use Apana\Bundle\MainBundle\Entity\User;

class SearchController extends Controller
{

    public function liveSearchAction(Request $request)
    {

        $string = $this->getRequest()->request->get('searchText');
        //$string = "alfa";
        $users = $this->getDoctrine()
                     ->getRepository('ApanaMainBundle:User')
                     ->findByLetters($string);

        //return users on json format

        $encoders = array(new XmlEncoder(), new JsonEncoder());
        $normalizers = array(new GetSetMethodNormalizer());
        $serializer = new Serializer($normalizers, $encoders);

        $jsonContent = $serializer->serialize($users, 'json');

        $response = new Response($jsonContent);
        return $response;
    }
}
用户存储库

    class UserRepository extends EntityRepository
{

    public function findByLetters($string){
        return $this->getEntityManager()->createQuery('SELECT u FROM ApanaMainBundle:User u  
                WHERE u.firstname LIKE :string OR u.lastname LIKE :string')
                ->setParameter('string','%'.$string.'%')
                ->getResult();
    }
}

如果我为我的字符串参数提供一个静态文本,并访问控制器的路由,它工作正常。

因此答案是更改以下内容:

     $.ajax({
        type: "GET",
        [...]

这并不奇怪,您可能实际上没有得到GET参数:


这里还提到了一些其他可能的方法。它也可以解决您的问题,但如果不需要,最好不要使用GET。

您是否检查了值是否已传递给javascript?您可能还想尝试使用
类型:“POST”
并尝试发回字符串进行调试。奇怪的是,刚刚将类型更改为“POST”。。。而且工作完美!!!
     $.ajax({
        type: "GET",
        [...]
     $.ajax({
        type: "POST",
        [...]
public function updateAction(Request $request)
{
    // $_GET parameters
    $request->query->get('name');

    // $_POST parameters
    $request->request->get('name');