这是previous question的后续问题,如果对背景信息有帮助的话。
我在下面收到了我试图按照建议实施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 code:
我假设我的问题(或至少部分问题)是`member_id ['用户名']但是我不确定如何访问相关联的用户名构件
<!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>
答案 0 :(得分:0)
据我了解,您正在努力使AJAX正常运行。问题是你需要两个单独的动作或一个更复杂的动作。
我建议创建两个单独的操作。一个将返回JSON响应(您可以使用JsonResponse或手动设置application/json
Content-Type
。不要忘记导入JsoneResponse的命名空间。另一个操作将返回一个包含模板变量的数组(不要忘记在控制器中放置@Template()注释。基本上这将是这样的(未经测试):
/**
* @Route("/member/search", name="membersearch")
*/
public function memberSearchAction()
{
$data = array(/*...*/);
$response = new Response();
$response->setContent(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* @Route("/", name="index")
* @Template()
*/
public function indexAction()
{
return array(/* ... */);
}