如何在Symfony控制器(注释)中使用Ajax正确获取参数发送?

时间:2018-09-21 08:58:49

标签: javascript php ajax symfony twig

过去2天,我一直在苦苦挣扎,到目前为止,我在互联网上找不到的答案都没有对我有所帮助。

我正在尝试在symfony项目上使用ajax传递数据。目的是更新树枝值。

所以我设置了一个像这样的ajax调用:

$searchbar = $("#searchBar");
var btnSearch = document.getElementById("btnRecherche");

btnSearch.onclick = chargeClientsData;

function chargeClientsData()
{
    let searchVal = $("#searchBar").val();
    console.log(searchVal);

    $.ajax({
        url: "{{ path('showIt') }}", // point to server-side PHP script
        dataType: 'json',
        data: {data :  searchVal },
        type: 'POST',
        success: function(data){
            console.log(data);
            $('#monelement').html("test");
        }
    });


}

如果要使用此控制器,我很想知道:

/**
 * @route("/showIt}", name="showIt", methods="POST")
 * @param $request
 * @return Response
 */
public function showIt(Request $request){

    var_dump($request);
    if($request->isXmlHttpRequest()){
        $search = $request->query->get('data');
        var_dump($search);
        $response = $this->checkValidRequest($request);
        return $response->setData(['search' => $search ]); // working
    }

    $response = $this->checkValidRequest($request);
    $response->setStatusCode(500);
    return $response;

}

var_dump($ request)没有显示任何值,当然var_dump($ search)为NULL。

在树枝上,$(“#searchBar”);发送righ值,但我确实成功了,但是空值为

我做错了什么吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

由于使用的是POST请求,因此可以在控制器中获取POST参数,如下所示:

$search = $request->request->get('data');

代替

$search = $request->query->get('data');
当前正在使用的

。请注意,$request->query->get('data')用于GET方法。