使用Ajax和Twig重新加载数据而不刷新页面

时间:2016-03-02 13:48:47

标签: php jquery ajax twig silex

我有一个页面,用户可以在其中编写评论并通过简单的表单发布。 我尝试使用twig使用ajax,但没有成功。 我可以毫无问题地将ajax请求发送到我的控制器,并将注释保存在我的数据库中。 我的问题是重新加载我的树枝模板的一部分而不刷新整个页面。

我的控制者回来了:

return $app['twig']->render('@views_suivi/suivi_affaire.html.twig', array('cache' => false,
                'auto_reload' => true,
                'affaire' => $affaire,
                'comments' => $comments
                ));

$ comments指出了文章的所有评论。当我发送ajax请求时,我的表注释会更新。有没有办法更新变量$ comments并重新发送到我的树枝而不刷新整个页面?

编辑:对不起,这是我的控制器的代码(它只是在我的数据库中插入注释)

function addCommentAjax(Application $app, Request $request)
{
    $cmt = new CommentaireQueries($app);

    $postParams = $app["request"]->request->all();
    //var_dump($postParams);
    if(isset($postParams['files'])) unset($postParams['files']);
    return !empty($postParams) ? $cmt->insertCommentAffaire($app,$postParams) : false;
}

Ajax:' AjoutCommentaire'是我的控制器addCommentAjax

的路由
$(document).ready(function() {
  $('form').on('submit',function(e){
    e.preventDefault();
    $.ajax({
        type     : "POST",
        url      : "AjoutCommentaire",
        data: $(this).serialize(),
        success  : function() {
          alert('success');
        }
      });
  });
});

我的表格:

<form role="form" method="POST">
   <div class="form-group">
     <textarea class="summernote" id="contents" rows="10" name="comment"></textarea>
   </div>
   <input type="hidden" name="phase" value="1" />
   <input type="hidden" name="id_affaire" value="{{ affaire.id }}" />

   <center><button type="submit" class="btn btn-link btn-block">Envoyer</button></center>
 </form>

基本上,我只是想在不刷新页面的情况下添加评论。

谢谢!

1 个答案:

答案 0 :(得分:0)

ajax请求中的url未正确定义。您不能只指定路由名称,您应该通过路由生成URL:

$.ajax({
        type: "POST",
        url: "path('AjoutCommentaire', {})",
        ...