【问题标题】:How to refresh the current page如何刷新当前页面
【发布时间】:2015-12-01 21:59:07
【问题描述】:

我在 Drupal 中自定义一个模块,在该模块中我想在 if 语句之后立即刷新当前页面,如何在 PHP 中刷新当前页面

【问题讨论】:

  • 已回答here。确保您保护自己免受无限重定向循环。

标签: php drupal


【解决方案1】:

如果你已经输出了一些东西,你就不能在 PHP 中(因为所有的headers 必须在输出开始之前发送)。

如果还没有输出:

header('Location:: current_page_url');
or
header("Refresh:0");

更好的方法是通过带有window 对象的Javascript 来实现

$window.location.reload();

【讨论】:

  • 如何在我的 php 代码中添加该 js?我应该制作一个js文件并将我的js添加到其中吗?
  • 您需要通过 <script src=""> 创建一个 .js 文件来获取它。如果一个人不了解 JS,这并不是可以在评论中轻松解释的东西。我建议在重新审视您的问题后立即使用 PHP,如果您没有任何输出(因为通常在 PHP 执行完成后加载 JS)。
【解决方案2】:

Php 提供以下函数来调用页面刷新

header("Refresh:0");

如果您需要页面重定向,您可以使用以下内容。

header("Refresh:0; url=redirect_page.php");

【讨论】:

  • Refresh 不是有效的 HTTP 标头,尽管它在大多数浏览器中都实现了。还有一种标准方法应该使用,即 Location 标头。
【解决方案3】:

只是 header("刷新:0");

【讨论】:

    【解决方案4】:

    为什么对原始问题投了反对票?在某些情况下,这是一件合法的事情。

    无论如何...我很惊讶没有人提到“Drupal Way”:

    drupal_goto(current_path()); 
    

    这个确切的场景在modules/simpletest/tests/common_test.module函数common_test_init()中进行了测试:

    /**
     * Implements hook_init().
     */
    function common_test_init() {
      if (variable_get('common_test_redirect_current_path', FALSE)) {
        drupal_goto(current_path());
      }
      if (variable_get('common_test_link_to_current_path', FALSE)) {
        drupal_set_message(l('link which should point to the current path', current_path()));
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-21
      • 2022-11-02
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      相关资源
      最近更新 更多