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