用ajax重新加载url页面

时间:2014-11-24 10:43:30

标签: javascript php jquery html

我正在尝试每隔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";
  }

?>

3 个答案:

答案 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'文件中向浏览器发送了一些数据?就像文件末尾的新行一样?