我在 Symfony2 下做一个项目。我在同一个控制器(历史,日历)中有两个动作和两个视图。
我的历史操作调用日历操作,默认值为本周。然后它渲染历史视图,它自己渲染日历视图。
第一个问题,它的工作,但在日历 HTML 视图之前,symfony 已经添加了一句话:HTTP/1.0 200 OK Cache-Control: no-cache Date: Wed, 30 Jan 2013 10:17:13 GMT
我怎样才能删除这句话?
我这样做是因为我得到了一些 JavaScript 链接,它们通过调用日历控制器(与上一周或下周不同)使日历在上周或下周运行,并在他的 div 中打印新日历。这有点工作,但我有一些奇怪的行为。我已将 JavaScript 代码放在日历视图中。我第一次加载页面 JavaScript 显示在代码源中,然后工作。如果我按下上一周或下一周按钮,日历控制器会返回新的日历视图,但没有 javascript。我在萤火虫中再也看不到JS了。但是(这是最奇怪的部分),JavaScript 仍然有效(如果我按下按钮它会重新加载日历 div)。
这是我的一些代码:
日历.html.twig:
<script type="text/javascript">
$('.nextWeek').live('click', function () {
$.ajax({
url: 'prof_calendrier/{{ nextWeek }}',
success: function (html) {$('.calendrier').html(html);}
});
});
$('.lastWeek').live('click',function () {
$.ajax({
url: 'prof_calendrier/{{ lastWeek }}',
success: function (html) {$('.calendrier').html(html);}
});
});
</script>
<p>Week from {{datesWeek.0}} to {{datesWeek.6}}</p>
[...] display rest of informations
prof_calendrierAction(日历动作):
public function prof_calendrierAction ($date) {
$erreur='';
$message='';
$session = $this->container->get('session');
[...] // lot of operations
return $this->render('CDUserBundle:Default:prof_calendrier.html.twig', array(
'next_cours' => $liste_prochains_cours,
'today' => date('D'),
'nextWeek' => $nextWeek,
'lastWeek' => $lastWeek,
'datesWeek' => $datesWeek
));
}
有人能帮助我吗 ?*
编辑:为避免 HTTP 消息,我的历史操作不再调用日历操作。我渲染了历史,并且在历史视图中,我得到了 ajax init,它将检查今天星期的日历动作。但是当我用上周或下周按钮刷新 JavaScript 时,html 会发生变化,但 JavaScript 不会更新。JavaScript 是写在日历视图中的,所以为什么日历动作不会比第一次返回更多的 JS。
编辑²:我做了几个测试。我的上/下周按钮的 JavaScript 在日历视图中。就像在这个视图中编写的所有 JS 行都被捕获并缓存了一段时间。我的意思是我下周第一次按,它显示下周没问题。第二次,萤火虫向我展示了两个 ajax 请求,一个针对同一周,一个针对之后的一个。就像第一行 JavaScript 行被保留和缓存,然后在下周的第二次按下时,它调用旧的,然后是新的......