var i='<?php echo $_SESSION['i']; ?>'; alert(i);function abc(){ i='<?php echo $_SESSION['i']; ?>'; alert(i);}window.setTimeout( abc, 1000 );问题是: 怎样才能在 $_SESSION['i'] 的发生变化时,这里的 i 也跟随变化.谢谢
调试欢乐多
session_start();
$_SESSION['i'] += 1
?>
<script type='text/javascript'>
function abc(){
i= '<?php echo $_SESSION['i']; ?>';
alert(i);
}
abc();
</script>
//testphp.phpsession_start();
$_SESSION['i'] += 1;
echo $_SESSION['i'];
?><?php
//testjs.phpsession_start();
?><script type='text/javascript'>
function abc(){
i= '<?php echo $_SESSION['i']; ?>';
alert(i);
window.setTimeout( abc, 5000 );
}
abc();
</script>当testphp.php 刷新 $_SESSION['i'] 的值发生变化后, testjs.php 中 $_SESSION['i'] 的值也要跟着变化!谢谢
javascript是你本地客户端浏览器的东西,如果不向服务器发送请求,根本就获取不到最新的session值.
可以考虑ajax
function abc()
{
<?php echo "var i=".$_SESSION['i'].";"; ?>;
alert(i);
window.setTimeout(abc, 1500 );
}
abc();
</script>
不过确实没什么实用性。
testjs.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>php 动态传值给 js</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="./prototype.js"></script>
<script type="text/javascript">
function abc()
{
var url = "./testphp.php";
var pars = "timestamp=" + new Date().getTime();
new Ajax.Request(url, {
method: 'get',
parameters: pars,
onComplete: function(res)
{
var sessionValue = res.responseText;
alert(sessionValue);
}
});
url = null;
pars = null;
window.setTimeout( abc, 5000 );
}
abc(); </script>
</head>
<body>
</body>
</html>testphp.php如下:
<?php
session_start();
$_SESSION['i'] += 1;
echo $_SESSION['i'];
?>客户端每个 5000 milliseconds 去显示一次服务器端传送过来的session值。
你试着运行下,看是不是你想要的结果。