Jquery Symfony,如何集成Ajax来执行搜索而不使用数据库中的实体刷新页面?
我想做一个搜索功能,搜索结果显示时不需要刷新页面。我是Ajax和MVC框架的新手,所以我以前没有尝试过。我不知道从哪里开始这个功能,尤其是使用Symfony,所以任何帮助都将不胜感激 这是我的搜索表单,其中包含表数据的默认列表:Jquery Symfony,如何集成Ajax来执行搜索而不使用数据库中的实体刷新页面?,jquery,ajax,symfony,Jquery,Ajax,Symfony,我想做一个搜索功能,搜索结果显示时不需要刷新页面。我是Ajax和MVC框架的新手,所以我以前没有尝试过。我不知道从哪里开始这个功能,尤其是使用Symfony,所以任何帮助都将不胜感激 这是我的搜索表单,其中包含表数据的默认列表: <div class="searchsubform"> <form action="{{ path('searchno') }}" method="get"> <input type="text" name="no"
<div class="searchsubform">
<form action="{{ path('searchno') }}" method="get">
<input type="text" name="no" placeholder="Search by #" id="searchno"/>
<button type="submit" name="submit">Search</button>
</form>
</div>
<div id="sublist">
<table id="showsub" class="tablesorter">
<thead>
<th>No. ↑↓</th>
<th>Weight ↑↓</th>
<th>Color ↑↓</th>
<th>Dimensions ↑↓</th>
<th>Qty ↑↓</th>
</thead>
{% for entity in entities %}
<tr class="datarow" data-id="{{ entity.subid }}">
<td>{{ entity.no }}</td>
<td>{{ entity.weight }}</td>
<td>{{ entity.color }}</td>
<td>{{ entity.dimensions }}</td>
<td>{{ entity.qty }}</td>
</tr>
{% endfor %}
</table>
</div>
这是我用于搜索的控制器:
/**
* @Route("/search/", name="searchdano")
* @Template("Bundle:Search:index.html.twig")
*/
public function searchSubByNoAction(Request $request) {
$no = $request->get('no');
$em = $this->getDoctrine()->getRepository('Bundle:Sub');
$entities = $em->searchSubByNo($no);
return $this->render("Bundle:Search:index.html.twig", array(
'entities' => $entities,
));
}
因此,现在当用户提交一个数字进行搜索时,页面将刷新并显示结果行。我需要它只显示结果而不刷新页面。我希望将结果显示定位在行的右侧,您将钩住表单提交事件并调用您的索引操作
$(".searchsubform form").on("submit", function(event) {
// prevent page reload
event.preventDefault();
$.ajax({
url: '{{ path('searchhome') }}',
type: 'POST',
success: function() {
// perform dom update to show search results
}
});
});
查看jQuerys.submit()
以及$.ajax
1)客户端:使用jquery发送ajax请求,如
2) 服务器端:searchSubByNoAction(请求$Request)
:
2.1在方法上使用@Route
注释,使用默认值={“\u格式”=“json”}
2.2删除模板注释
2.3方法应该返回新的响应(json_encode($entities))代码>
3) 客户端:获取响应并使用jquery动态填充tbl中的行
3.1)使用firebug或inspect element工具查看您从服务器获得的json内容我是否向我的indexAction或我的searchSubByNoAction()发送请求?您正在通过ajax向searchSubByNoAction方法发送请求,等待客户端的成功响应,并基于服务器返回的数据(searchSubByNoAction方法)在客户端重新填充表
$(".searchsubform form").on("submit", function(event) {
// prevent page reload
event.preventDefault();
$.ajax({
url: '{{ path('searchhome') }}',
type: 'POST',
success: function() {
// perform dom update to show search results
}
});
});