我有一个页面显示每次重新加载的随机图片。此页面仅显示是否通过$ _GET(表示用户配置文件)传递数字。要转到下一张随机图片,我想要一个提交按钮来重新加载页面。但是,我遇到了两个障碍:
header
函数生成臭名昭着的“已发送的标题”错误。此外,用户被重定向,因为没有传递参数。location.reload
会重新加载页面,但同样缺少参数会导致相同的结果。所以我的问题是Javascript中是否可以重新加载带参数的页面?或者您知道另一种解决方案吗?
编辑:使用警告框进行了一些测试,并且网址显示在地址栏中。不知道为什么没有传递参数。
答案 0 :(得分:2)
您应该想知道为什么会收到headers already sent
错误。通常是因为您的流量不正确。确保在生成输出之前处理PHP
。检查代码顶部提交的表单 - 并安全地重定向而不执行任何其他操作。应该解决你的问题。
答案 1 :(得分:2)
在另一个主题中,我发现了
window.location.replace(window.location.href)
将保留参数。
答案 2 :(得分:1)
在PHP中使用header函数会产生臭名昭着的“已发送的标题”错误。
这很简单:将执行header()调用的代码移到顶部(在任何其他输出之前)。 “已经发送的标题”是臭名昭着的,但也非常容易解决。
在Javascript中,location.reload会重新加载页面,但同样缺少参数会导致相同的结果。
然后传递它?我认为这应该有用吗?
window.location( window.location.toString( ) );
答案 3 :(得分:1)
而不是location.reload
页面,您可以使用document.location
将页面重定向到具有通过GET传递的参数的同一页面。例如,
<?php
$id = $_GET['user_id'];
echo "<script type='text/js'>
document.location='".$_SERVER['PHP_SELF']."&id=".$id."';
</script>";
?>
答案 4 :(得分: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>