1

我有一个在首页节点上投票的网站,每次投票后我都需要更新同一节点上的视图。我目前在我的 page.tpl.php 中使用以下代码

<script type="text/javascript">
 function fivestarResult(voteResult) {
      $('div#fivestar-summary-'+voteResult.vote.id).html(voteResult.result.summary);
      window.location = "http://www.mydomain.com/";
 };
</script>

有没有办法直接刷新视图而不是刷新整个页面?我在 javascript 方面不是很好,所以我有点迷茫。

4

4 回答 4

0

我花了无数个小时调试一个视图才意识到我启用了缓存并且正在查看旧结果。不同用户组的缓存也是分开的。因此,您可能需要手动刷新缓存以使其更新,这可能是 Ajax 的一个挑战。

于 2012-06-05T19:57:04.800 回答
0

在这种情况下我可能会做的一个想法是 Ajax 再次调用视图并在单击事件上通过 JQuery 再次将其呈现在页面内。

举这个例子,我想这会更清楚

Drupal 6:在页面 tpl 文件中渲染视图 2 数据

于 2010-12-05T10:44:56.713 回答
0

谢谢拉贝,

听起来它应该工作。我尝试了几种不同的方法,但无法将其...

这段代码(在 page.tpl.php 中)是否有明显的遗漏?

<script type="text/javascript">
    function fivestarResult(voteResult) {
    $('div#fivestar-summary-'+voteResult.vote.id).html(voteResult.result.summary);
    <?php
        $name = "comparison_view";
        print views_embed_view($name, $display_id = 'default');
    ?>
    };
</script>

非常感谢您的帮助

于 2010-12-05T22:48:06.050 回答
0

像 Drupal 中的许多东西一样,可能已经编写了一个模块来执行此操作。Ajax 视图刷新听起来很有前途!

于 2010-12-06T01:28:41.420 回答