我试图让一个简单的 AJAX 请求在 Symfony2 中工作。似乎请求永远不会到达 Controller 。 AJAX 请求不会提示数字“123”,而是返回当前页面的 HTML (index.html.twig)。我有一种感觉,因为 AJAX 路由的模式指向我所在的当前页面,所以 AJAX 响应被当前页面的输出填充,而不是从 Controller 获取响应。有什么方法可以让我只从 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
这是我的 Controller :
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);
}
}
最佳答案
检查路由
顺序。将 Ajax 路由移动到第一位。
关于javascript - Symfony2 : AJAX request returns full page html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061462/