使用参数重新加载页面

发布于 2024-11-14 09:21:15 字数 383 浏览 2 评论 0原文

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

  • 在 PHP 中使用 header 函数会产生臭名昭著的“标头已发送”错误。另外,由于没有传递参数,因此用户被重定向。
  • 在 Javascript 中,location.reload 确实会重新加载页面,但同样,缺少参数会导致相同的结果。

所以我的问题是Javascript是否可以使用参数重新加载页面?或者您知道另一种解决方案吗?

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

I have a page showing a random picture on each reload. This page only displays if a number is passed through $_GET (represents a user profile). To go to the next random picture I'd like a submit button to simply reload the page. However, I'm hitting two snags:

  • In PHP using the header function produces the infamous "headers already sent by" error. Plus the user is redirected because no parameter is passed.
  • In Javascript, a location.reload does reload the page but, again, the parameter is missing leading to the same result.

So my question is whether it is possible in Javascript to reload a page with a parameter? Or do you know of another solution?

Edit: Did some tests with an alert box and the url shows up as it appears in the adress bar. No idea why the parameter isn't being passed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

握住你手 2024-11-21 09:21:15

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

You should wonder why you receive the headers already sent error. It is usually because your flow is incorrect. Make sure you handle your PHP before you generate the output. Check for the submitted form at the top of your code - and safely redirect without executing anything else. Should solve your problem.

爱你是孤单的心事 2024-11-21 09:21:15

在另一个主题中,我发现

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

将保留参数。

In another topic i found that

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

will keep the parameters.

dawn曙光 2024-11-21 09:21:15

在 PHP 中使用标头函数会产生臭名昭著的“标头已发送”错误。

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

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

然后传过去?我想这应该有用吧?

window.location( window.location.toString( ) );

In PHP using the header function produces the infamous "headers already sent by" error.

That's simple enough: move the code that does the header( ) call up to the top (before any other output). "Headers already sent" is infamous, but also incredibly easy to solve.

In Javascript, a location.reload does reload the page but, again, the parameter is missing leading to the same result.

Then pass it along? This should work, I think?

window.location( window.location.toString( ) );
深海夜未眠 2024-11-21 09:21:15

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

<?php
    $id = $_GET['user_id'];
    echo "<script type='text/js'>
          document.location='".$_SERVER['PHP_SELF']."&id=".$id."';
          </script>";
?>

Instead of location.reload the page, you can use document.location to redirect the page to the same page with a parameter passed through GET. For example,

<?php
    $id = $_GET['user_id'];
    echo "<script type='text/js'>
          document.location='".$_SERVER['PHP_SELF']."&id=".$id."';
          </script>";
?>
情独悲 2024-11-21 09:21:15

好吧,我不妨发布这篇文章,因为通过 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>

Ok, I might as well post this as it's been a pain getting something working through javascript and PHP and I don't have enough time to get something in ajax working. A simple workaround is to simply specify the parameter in the action attribute of the form (special markup is from 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文