【问题标题】:PHP Reload page when clicking link单击链接时PHP重新加载页面
【发布时间】:2014-02-11 06:40:32
【问题描述】:

我想在用户单击链接时重新加载我的页面。 我正在使用window.location.reload(true) 函数,这重新加载了页面,但它使用了缓存版本。我希望它完全重新加载它! 我正在使用谷歌浏览器测试我的主页!

当前代码:

for ($i=0; $i<count($files); $i++) {
    $image = $files[$i];
    echo '<tr><td>';
    echo '<img src="';
    echo $image;
    echo '" width="120" height="100"></td>';
    $link = '<a href="deletesingle.php?bild=' . $image . '" target="_blank"' .  'onClick="window.location.reload(true);">';
    echo '<td>';
    echo $link;
    echo 'L&ouml;schen!</a>';
    echo '</td></tr>';
}

【问题讨论】:

  • 可以!您的!问题!涉及!所以!很多!戏剧!那!它!需要!感叹!积分!!!!!!!尝试在页面的 url 中添加一个 cache-buster 值,每次点击都会改变,这将导致浏览器获取一个新版本,而不是仅仅重绘缓存的副本。
  • 或者禁用所有缓存控制指令。
  • 我猜你想在图像/项目删除后显示新列表?如果是这样,为什么不在.php文件中删除图像后重定向?
  • user3165879 的想法不错。谢谢。还有 Marc B. 你的问题是什么?我用了两个感叹号?

标签: javascript php caching hyperlink reload


【解决方案1】:

使用属性目标的 _blank 值将请求发送到新页面或新选项卡。 您可以调用您的 deletesingle.php 页面并使用参数重定向到您的列表,例如 ?no_cache=1

然后,在您的列表页面中,如果设置了 $_GET['no_cache'],则强制标头阻止缓存

<?php
if (isset($_GET["no_cache"] && $_GET["no_cache"] == 1) {
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
}
?>

【讨论】:

    【解决方案2】:

    让我用一个简化的模型来满足您的要求:

    你有一个当前页面,我们称之为“images.php”。它列出了带有删除按钮的图像。

    如果您在没有使用 window.reload 的情况下单击当前页面上的任何链接,它将在没有缓存的情况下加载。但是您还希望页面执行删除操作。最好将删除逻辑与列表结合起来。

    <?php
    //images.php
    
    if ($action=='delete'&&is_numeric($_GET['imageid'])){
      //delete the image here
    }
    
    //list the images here
    ...
    }
    

    将您的新删除链接设置为 images.php?action=delete&imageid=imageid

    【讨论】:

      【解决方案3】:
      <?php 
      $page = $_SERVER['PHP_SELF'];
      print "<a href=\"$page\">Reload this page</a>";
      ?>
      

      【讨论】:

      • 这是如何绕过缓存的?
      • 不知道。但它确实如此,至少在我在 Firefox Mac 中的测试中是这样。除此之外,通过简单地将 添加到页面的头部,它应该总是刷新绕过任何浏览器中的任何缓存......
      【解决方案4】:

      假设你的文件被命名为:

      list.php

      for ($i=0; $i<count($files); $i++) {
      $image = $files[$i];
      echo '<tr><td>';
      echo '<img src="';
      echo $image;
      echo '" width="120" height="100"></td>';
      $link = '<a href="deletesingle.php?bild=' . $image . '">';
      echo '<td>';
      echo $link;
      echo 'L&ouml;schen!</a>';
      echo '</td></tr>';
      

      deletesingle.php

      //Your code to delete image
      
      //redirect back to list.php
      header('location: deletesingle.php');
      

      【讨论】:

        猜你喜欢
        • 2021-06-14
        • 1970-01-01
        • 2015-06-09
        • 2011-09-12
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多