我每10秒用jquery刷新div的内容。 我从名为status.php
的php文件中读取内容js和div:
<script>
function autoRefresh_div()
{
$("#ReloadThis").load("status.php");// a function which will load data from other file after x seconds
}
setInterval('autoRefresh_div()', 10000); // refresh div after 10 secs
</script>
<div id="ReloadThis"></div>
当我把它放入我的status.php时,它运行正常:
$mystatus = 'busy';
echo $mystatus;
在div中出现几秒钟后:&#34;忙碌&#34;。
当我尝试动态地给$ mystatus一个值时,它不再是wrk了:
形式:
<form method="post" action="status.php">
<input type="text" name="status"/>
<input type="submit" name="submit" value="Submit" />
</form>
和status.php:
$mystatus = $_POST['status'];
echo $mystatus;
当我打开status.php时,它会回显输入的值。 但是javascript不会在div中显示回声
为什么在我动态创建$ mystatus的值时这不起作用?
答案 0 :(得分:1)
您对PHP所做的每个请求都是一个独立的请求。因此,假设您已使用POST提交了状态值,您的php脚本将只记住该请求。
因此,下次当你的jquery尝试请求该值时,它将不存在。
您需要将POST值存储到会话,然后每次重新发送会话值。
这样的事情:
session_start();
if(isset($_POST['status']))
$_SESSION['status'] = $_POST['status'];
if(!empty($_SESSION['status'])) {
echo $_SESSION['status'];
}
else
echo "default";
当然,在使用session_start();
答案 1 :(得分:0)
您必须将$ _POST [&#39; status&#39;]存储在上面给出的会话变量中,或插入到数据库中。
答案 2 :(得分:0)
其他答案是正确的,但他们假设您已经发布了一次状态,然后希望刷新返回与之前发布的值相同的值。
但是,如果您希望刷新也重新发布当前表单数据,那么您只需将该帖子数据包含在load()
函数中,如下所示:
$("#ReloadThis").load("status.php", $("form").serialize());