Symfony2:AJAX请求返回整页html

时间:2015-05-05 19:19:09

标签: javascript php jquery ajax symfony

我正在尝试在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);
    }
}

1 个答案:

答案 0 :(得分:2)

检查routing订单。将Ajax路线移至第一位。