Symfony / PHP7,使用AJAX传递参数

时间:2017-11-25 10:26:08

标签: php jquery ajax symfony

我正在创建eisenhover矩阵,我想要一个按钮来刷新网格中的数据,但我不知道如何使用ajax传递参数/变量。

/**
 * @Route("/articles/list", name="articles_list")
 */
public function showArticlesAction(bool $important = false, bool $urgent = false){
    $articles = $this->returnAllArticles();

    return $this->render(
        'articles/list.html.twig',
        array('articles' => $articles,
            'important' => $important,
            'urgent' => $urgent)
    );
}

和脚本

function refreshFunctionName()
    {
        $.ajax({
            type: "POST",
            url: "{{ path('articles_list') }}",
            data: {'important': true, 'urgent': true},
            cache: false,
            success: function(data){
                $('#list').html(data);
            },
            error: function(){},
            complete: function(){}
        });
    }

如果我尝试将它与ajax一起使用,showArticlesAction总是采用默认数据,可以正常使用:

{{ render(controller(
    'AppBundle:Articles:showArticles',
    { 'important': true,
    'urgent': true}
    )) }}

1 个答案:

答案 0 :(得分:1)

您需要在路线定义中定义这些参数:

/**
 * @Route("/articles/list/{important}/{urgent}", name="articles_list")
 */

你在AJAX调用中获取GET方法或从POST表中获取这些参数

/**
 * @Route("/articles/list", name="articles_list")
 */
public function showArticlesAction(Request $request){
    $articles = $this->returnAllArticles();

    $important = $request->request->get('important');
    $urgent = $request->request->get('urgent');

    return $this->render(
        'articles/list.html.twig',
        array('articles' => $articles,
            'important' => $important,
            'urgent' => $urgent)
    );
}