如何在树枝上刷新块

时间:2014-12-08 14:01:10

标签: javascript php symfony twig

每5秒调用一次控制器的javascript代码

                           $.post('{{path('nb_invitation')}}',
                             {data: '1'},
                             function(response){
                                 if(response.code == 100 && response.success){
                                     alert('yes');
                                 }
                             }, "json");   

代码:

我的notificationIv.html

{% block notificationIv -%}  
    // content
    {% endblock %}

生根

 nb_invitation:
        path:     /communaute/nb_invitation
        defaults: { _controller: communauterBundle:notificationIv:nb_invitation }

控制器

public function nb_invitationAction(Request $request){
     return  $this->render('communauterBundle:notificationIv:notificationIv.html.twig');
    }

的index.html

  {% block notificationIv -%}
         {{ render(controller('communauterBundle:notificationIv:nb_invitation')) }}
    {% endblock %}

2 个答案:

答案 0 :(得分:1)

$.post('{{path('nb_invitation')}}',
   {data: '1'},
   function(response){
          if(response.code == 100 && response.success){
              $("#notification_identifier").html(response.data)     // or whatever you return 
          }
}, "json"); 

由于floren说你很困惑,上面的代码是一个使用jquery的例子,只需要定义一个id(或一个类)到notificaction容器,这样你就可以更新内容..就像

{% block notificationIv -%}  
  <div id="notification_identifier"></div>
{% endblock %}

答案 1 :(得分:0)

我认为你混淆了JS和PHP的使用 - 它们在html页面中并不相同。你的

{{ render(controller('communauterBundle:notificationIv:nb_invitation')) }}

不会&#34;刷新&#34;本身只是因为你对控制器进行了ajax调用。如果你真的想要刷新那么可能是

的index.html

<div id="alert"></div>

控制器

return JsonResponse(array('message' => $message ))

我不熟悉jQuery ajax语法,但基本上你做了一个GET ajax并用你的ajax返回的内容替换div#alert中的html值。像(纠正我的语法)

的script.js

$.ajax({
  url: "{{path('nb_invitation')}}",//even though you can use js routing in symfony, much cleaner
}).done(function(response) {
    $.getElementById('alert').html(response.message)
});

我知道语法不准确,但这就是想法