如何在Symfony中附加嵌套实体引用以附加到AJAX脚本

如何在Symfony中附加嵌套实体引用以附加到AJAX脚本,ajax,symfony,Ajax,Symfony,这是if的后续问题,有助于了解背景信息 我收到以下消息,我已尝试按照建议实现AJAX。注意:一个用户(用户名)可以有多个成员与其关联,因此我需要为选择的任何成员返回相关用户名: 响应路径: use Symfony\Component\HttpFoundation\Response; /** * @Route("/member/search", name="membersearch") */ public function memberSearch(Request $request) {

这是if的后续问题,有助于了解背景信息

我收到以下消息,我已尝试按照建议实现AJAX。注意:一个用户(用户名)可以有多个成员与其关联,因此我需要为选择的任何成员返回相关用户名:

响应路径:

use Symfony\Component\HttpFoundation\Response;

/** 
 * @Route("/member/search", name="membersearch")
 */
public function memberSearch(Request $request)
{
    $response = new Response();
    $members = $this->getDoctrine()->getRepository('AppBundle:Members')->findActiveMembers();
    $response->setContent(json_encode($members));
    $response->headers->set('Content-Type', 'application/json');
    $response->send();
}
HTML代码:

use Symfony\Component\HttpFoundation\Response;

/** 
 * @Route("/member/search", name="membersearch")
 */
public function memberSearch(Request $request)
{
    $response = new Response();
    $members = $this->getDoctrine()->getRepository('AppBundle:Members')->findActiveMembers();
    $response->setContent(json_encode($members));
    $response->headers->set('Content-Type', 'application/json');
    $response->send();
}
我假设我的问题(或至少部分问题)是'member_id['username'],但我不确定如何访问关联成员的用户名

<!DOCTYPE html>
<html>
    <head>
        <script>
            $( "#search-names" ).autocomplete({
                source: "/member/search",
                minLength: 2,
                change: function() {
                  var familyname = $(this).val();
                  if (!familyname) return;
                  window.location = window.location + '?_switch_user=' + member_id['username'];
                }
            });
        </script>
    </head>
    <body>
        <form class="navbar-form navbar-left" role="search">
            <div class="form-group">
            <input type="text" id="search-names" class="form-control" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">Submit</button>
        </form>
    </body>
</html>

$(“#搜索名称”).autocomplete({
来源:“/member/search”,
最小长度:2,
更改:函数(){
var familyname=$(this.val();
如果(!familyname)返回;
window.location=window.location+'?_-switch_-user='+member_-id['username'];
}
});
提交

据我所知,您正试图让AJAX正常工作。问题是,你要么需要两个单独的动作,要么需要一个更复杂的动作

我建议创建两个单独的操作。一个将返回JSON响应(您可以使用JsonResponse或手动设置
应用程序/JSON
内容类型
。不要忘记导入JsonResponse的命名空间。另一个操作将返回一个带有模板变量的数组(不要忘记在控制器中放置@template()注释).基本上,这将是这样的(未经测试):


PHP代码似乎不正确。首先创建数据,然后执行
$response->setContent($data)
然后
返回$response
。签出并。您还应该以某种方式使用
term
参数。您可以通过在浏览器中打开
/members/search?term=John
来测试PHP端。您假设
$(this).val()
将包含familyname。但是,如果将familyname设置为
标签
并将用户名设置为
,则
$(此).val()
将包含用户名。您可以先使用3个或4个用户的静态列表进行尝试,以确保JS部件能够独立工作。感谢后续操作:)我一直在尝试
newjsonresponse()
但是我已经更新为使用
->setContent($data)
但是PhpStorm告诉我它无法识别。我将用我现在使用的更新问题中的控制器代码。您可能希望删除问题中的JavaScript部分,并添加您想要的JSON。这将吸引Symfony开发人员回答这个问题。我的符号知识相当基础。如果PHP部分工作正常,那么整个工作就很容易完成。我有种感觉,你没有按照指南去做。我很确定
$this->render()
不会与
新响应()一起使用。