在 Symfony2 中使用 ajax 调用的 Searchfuntion

Searchfuntion working with ajax calls in Symfony2

本文关键字:调用 Searchfuntion ajax Symfony2      更新时间:2023-09-26

我正在Symfony2中编写一些基本的crud应用程序,我想在某个页面上实现某种类型的搜索功能。

这个想法是我想通过在输入字段中输入一些东西来启动搜索查询,这将触发 ajaxcall(我想不出更好的东西(。该 ajaxcall 的响应必须是一种弹出列表,其中包含可单击的项目,在单击项目时将其放置在初始页面上的另一个字段中。

我有两个问题:有没有比ajax更好的方法,我如何解决"弹出列表"的问题。

第二:我可以用这种代码在 Symfony2 中进行 post ajax调用:

var data = 'test';
        $.ajax({
            url: "{{ path('test_oost') }}",
            data: { data: data },
            method: "post",
            success: function(data) {
                //some things here
            }

但我认为使用帖子有点奇怪,我想使用 get..显然这不起作用,因为我无法在控制器中检索数据。

编辑:我

忘了将我的控制器发布到我正在处理ajax调用的地方,这是代码:

    public function testGetAction(Request $request)
{
    $data = $request->request->get('data');
    $em = $this->getDoctrine()->getManager();
    $entity = $em->getRepository('EuropsimProductBundle:SimProfile')->find($data);
    return new Response($entity); }

这在方法:"post"中工作正常,但是当我尝试使用"get"时失败了。

我还阅读了有关typeahead的信息,这非常接近我的意思,问题是我想要一个自定义的小弹出窗口或其他东西,因为ajax应该返回一个对象数组,其中包含必须显示的多个属性,并且可以选择多个项目。您可以将其视为两个步骤,首先启动搜索查询,这将您带到一种弹出窗口或可以在其中选择所需的行以在页面上进一步使用的内容。

提前感谢!希西

你必须使用方法 $request->query

对于 GET 方法:

$data = $request->query->get('data');

对于开机自检方法:

$data = $request->request->get('data');

这真的不是一个与 Symfony2 相关的问题......但。。。

这段代码是javascript,如果你想用GET直接把方法改成GET

var data = 'test';
        $.ajax({
            url: "{{ path('test_oost') }}",
            data: { data: data },
            method: "get",
            success: function(data) {
                //some things here
            }

然后在Symfony中创建路由test_oost,并在控制器上做任何你想做的事情,在响应中发送"数据"。

然后在 te success方法相应地处理这些数据并创建所需的视图。

编辑

:根据您的新编辑,您在访问data参数时出错,您应该使用query而不是request

$data = $request->query->get('data');