我正在尝试每隔3秒刷新一次页面,url页面会随$ _GET变量而变化。 我正在尝试将$ _GET var保存到会话和cookie中,但是已经发送了错误标头。 如何在页面重新加载后更改URL?
这里我的脚本: 的的index.php
<?php
session_start();
$skill =$_SESSION['skill'];
?>
<script type="text/javascript">
var auto_refresh = setInterval(function () {
$('#src2').load('monitor.php?skill=<?php echo $skill;?>').fadeIn("slow");
}, 3000);
</script>
monitor.php
<?php
include "conn.php";
session_start();
$_SESSION['skill'] = $_GET['skill'];
if ($_SESSION['skill']=='')
{
$a ="bro";
$_SESSION['skill']=4;}
elseif ($_SESSION['skill']==4){
$a = "yo";
$_SESSION['skill']='5';
}
elseif ($_SESSION['skill']==5){
$a = "soo";
}
?>
答案 0 :(得分:0)
首先,“已发送标头”表示触发该错误的任何文件(读取错误消息的其余部分)都有一些输出。最常见的罪魁祸首是文件开头的空格,在<?php
标记之前,但检查echo
和其他输出关键字。标题(包括设置cookie)必须在任何输出之前发送。
从这里开始,这个答案涵盖了如何实现问题的“刷新页面”部分。你提供的代码并没有真正显示你现在是如何做到的,所以这就是我推荐的方法。
其次,要刷新页面,您需要在JS检查的monitor.php
末尾回显一些内容。简单的方法就是回应JS刷新:
echo '<script>window.location.reload();</script>';
但最好输出一些J index.php
然后检查:
// monitor.php
echo json_encode(array('reload' => true));
// index.php
$('#src2').load('monitor.php?skill=<?php echo $skill;?>', function(response) {
if (response.reload) window.location.reload();
}).fadeIn('slow');
最后一点:你可能会发现response
只是JS回调函数中的纯文本 - 你可能需要这样做:
// index.php
$('#src2').load('monitor.php?skill=<?php echo $skill;?>', function(response) {
response = $.parseJSON( response ); // convert response to a JS object
if (response.reload) window.location.reload();
}).fadeIn('slow');
答案 1 :(得分:0)
尝试放
ob_start()
前
session_start()
每页都有。这将解决您的问题。
答案 2 :(得分:-1)
如果不查看设置会话的代码,我认为您的问题就在那里。您需要在将任何数据发送到浏览器之前启动会话。
看看:http://php.net/session_start
修改强> 对不起,有点快,是不是你在'conn.php'文件中向浏览器发送了一些数据?就像文件末尾的新行一样?