如何使用Ajax调用特定的控制器动作?

时间:2014-02-17 15:13:19

标签: javascript php jquery ajax symfony

我正在尝试使用Ajax从数据库重新加载数据。但是,Ajax不会调用我在url:中指定的控制器操作。这是我的Ajax代码:

function selectFieldChanged(id){
    $.ajax({
        type: "POST",
        url: Routing.generate('demo_ajax'),
        data: id,
        success: function(){
            alert("Success");
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            alert('Error : ' + errorThrown);
        }
    });
}

$(document).ready(function(){
    var id = $(this).val();
    $('#form_patient').change(function(){selectFieldChanged(id)});
});

routing.xml

demo_ajax:
    pattern: /ajax/patient
    defaults: { _controller: DemoBundle:Default:index}
    options:
        expose: true

所以,我试着简单地回显indexAction中的值,看它是否被调用。

public function indexAction(Request $request)
{   
        if($request->isXmlHttpRequest()){
            echo "xmlHttpRequest is called";
        }
        if($request->getMethod()=='POST'){
            echo 'POST is called';
        }
}

但是,我没有收到indexAction的任何内容,但我从`Success收到了警告消息Ajax我做错了什么?

1 个答案:

答案 0 :(得分:2)

成功回调从服务器接收数据,因此必须声明一个变量来捕获它:

success: function(data){ // <-----

    console.log(data);

    alert("Success");

},