1

我有一个页面在每次重新加载时显示随机图片。此页面仅在通过 $_GET 传递数字时显示(表示用户配置文件)。要转到下一张随机图片,我想要一个提交按钮来简单地重新加载页面。但是,我遇到了两个障碍:

  • 在 PHP 中使用该header函数会产生臭名昭著的“headers already sent by”错误。加上用户被重定向,因为没有传递参数。
  • 在 Javascript 中, alocation.reload确实会重新加载页面,但同样,缺少参数会导致相同的结果。

所以我的问题是是否可以在 Javascript 中重新加载带有参数的页面?或者你知道另一种解决方案吗?

编辑:使用警报框进行了一些测试,并且 url 显示在地址栏中。不知道为什么没有传递参数。

4

5 回答 5

2

In another topic i found that

window.location.replace(window.location.href)

will keep the parameters.

于 2011-06-07T11:30:29.790 回答
2

您应该想知道为什么会收到headers already sent错误消息。这通常是因为您的流程不正确。确保PHP在生成输出之前处理你的。在代码顶部检查提交的表单 - 并在不执行任何其他操作的情况下安全地重定向。应该能解决你的问题。

于 2011-06-07T10:44:41.777 回答
1

在 PHP 中使用 header 函数会产生臭名昭著的“headers already sent by”错误。

这很简单:将执行 header() 调用的代码移到顶部(在任何其他输出之前)。“标头已发送”是臭名昭著的,但也非常容易解决。

在 Javascript 中,location.reload 确实会重新加载页面,但同样缺少参数会导致相同的结果。

然后传下去?这应该可行,我想?

window.location( window.location.toString( ) );
于 2011-06-07T10:44:57.793 回答
1

代替location.reload页面,您可以使用document.location通过 GET 传递的参数将页面重定向到同一页面。例如,

<?php
    $id = $_GET['user_id'];
    echo "<script type='text/js'>
          document.location='".$_SERVER['PHP_SELF']."&id=".$id."';
          </script>";
?>
于 2011-06-07T11:46:53.293 回答
0

好的,我不妨发布这个,因为通过 javascript 和 PHP 工作很痛苦,而且我没有足够的时间让 ajax 工作。一个简单的解决方法是简单地在表单的 action 属性中指定参数(特殊标记来自 smarty)。

   <form Method="POST" ACTION="my_page.php?param={$smarty.get.i}">
          <!-- PHP: If ( isset($_POST['next']) ) do SQL ... -->
          <input type="submit" name="like" value="I like">
          <input type="submit" name="next" value="Next" >
   </form>
于 2011-06-07T11:54:08.673 回答