当我用ajax发出请求时我可以看到post值,但是当我看到控制台日志时它会返回给我这条消息---
数据没有成功
并且在symfony web调试工具栏中,我可以看到有没有ajax请求。
这是我的html代码---
<form method="post" id="searchform">
<div align="center" class="col-md-10">
<input type="text" id= "contentSearch" name="contentSearch" >
</div>
<div class="form-group"><button type="submit" class="btn btn-default" id="submitSearch">
Search
</button></div>
</form>
这是我的javascript代码---
<script>
$(document).ready(function () {
$("#searchform").on('submit', function (e) {
$.ajax({
url: '/home',
type: 'post',
data: { contentSearch : $('#contentSearch').val()},
success: function (data) {
console.log(data)
}
});
return false;
});
});
</script>
控制器代码---
路由代码---
content:
path: /home
defaults: { _controller: AdminBundle:Home:home }
控制器代码---
<?php
namespace AdminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class homeController extends Controller {
/**
* @param Request $request
* @return Response
*/
// route of /home
function homeAction(Request $request) {
if ($request->getMethod() == 'POST') {
$request = $request->request->get('contentSearch');
// do something with the $request
$result;
}}
return $this->render('AdminBundle:Home:home.html.twig', array(
'pageTitle' => 'my ajax',
'menu' => $this->menu,
'result' => $result
)
);
有谁知道如何解决这个问题!!!!
答案 0 :(得分:-2)
提交表单时,默认行为是加载表单&#34; action&#34;带有提供的输入字段的页面。如果没有指定任何操作,它只是将值传递给当前页面并重新加载它。
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.3
您需要做的是阻止表单提交,以便启动ajax请求。使用preventDefault来实现这一目标。
UIStatusBarForegroundView
答案 1 :(得分:-2)
您要两次发送表单。如果您使用$(form).on(&#39; submit&#39;)设置一个函数,那么在表单发送之前,它将执行您告诉它的任何操作。您必须添加event.preventDefault()
$(form).on('submit',function(event){
event.preventDefault()
// Do Ajax
})
请务必使用echo返回Ajax响应。