我正在尝试在Symfony2中使用简单的AJAX请求。似乎请求永远不会到达控制器。 AJAX请求不返回警告数字'123',而是返回当前页面的HTML(index.html.twig)。我有一种感觉,因为AJAX路由的模式指向我所在的当前页面,AJAX响应正在填充当前页面的输出而不是从Controller获得响应。有什么方法可以从控制器中获得价值吗?任何帮助将不胜感激。
这是我的Twig模板(index.html.twig):
{% extends 'base.html.twig' %}
{% block body %}
<a href="123" class="test">Test</div>
{% endblock %}
{% block javascripts %}
{% javascripts '@AppBundle/js/jquery.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('.test').on('click', function(){
var id = jQuery(this).attr('href');
jQuery.post('{{path('task_ajax')}}',
{data: id},
function(response){
alert(response);
}
);
return false;
});
});
</script>
{% endblock %}
这是我的routing.yml文件:
task_ajax:
pattern: /jobs
defaults: { _controller: AppBundle:Ajax:task }
requirements:
_method: POST
这是我的控制器:
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class AjaxController extends Controller
{
public function taskAction() {
$request = $this->container->get('request');
$data = $request->query->get('data');
return new Response($data);
}
}
答案 0 :(得分:2)
检查routing
订单。将Ajax路线移至第一位。