doupaimo8288 2017-11-25 10:26
浏览 63
已采纳

Symfony / PHP7,使用AJAX传递参数

I am creating eisenhover matrix and I want a button to refresh a data in grid, but I have no idea how to pass parameters/variables with 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)
    );
}

and script

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(){}
        });
    }

the showArticlesAction always takes default data if I try to use it with ajax, works fine with:

{{ render(controller(
    'AppBundle:Articles:showArticles',
    { 'important': true,
    'urgent': true}
    )) }}
  • 写回答

1条回答 默认 最新

  • dongwen2162 2017-11-25 10:55
    关注

    You need to define those parameters in the Route definition:

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

    and you GET method in AJAX call or get those parameters from POST table

    /**
     * @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)
        );
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?