var i='<?php echo $_SESSION['i']; ?>'; alert(i);function abc(){    i='<?php echo $_SESSION['i']; ?>'; alert(i);}window.setTimeout( abc, 1000 );问题是: 怎样才能在 $_SESSION['i'] 的发生变化时,这里的 i 也跟随变化.谢谢

解决方案 »

  1.   

    <?php
    session_start();
    $_SESSION['i'] += 1
    ?>
    <script type='text/javascript'>
    function abc(){
    i= '<?php echo $_SESSION['i']; ?>'; 
    alert(i);
    }
    abc();
    </script>
      

  2.   

    上网上看看commet技术js中用setTimeout()php中用循环+sleep()每当js的ajax提交到PHP时,PHP判断,符合返回给ajax(可以在Ajax中进行你想要的操作),不符合继续sleep()
      

  3.   

    这样不行!我的意思是:<?php
    //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'] 的值也要跟着变化!谢谢
      

  4.   

    明白你意思了。
    javascript是你本地客户端浏览器的东西,如果不向服务器发送请求,根本就获取不到最新的session值.
    可以考虑ajax
      

  5.   

    <script type='text/javascript'>
    function abc()
    {
    <?php echo "var i=".$_SESSION['i'].";"; ?>; 
    alert(i);
    window.setTimeout(abc, 1500 );
    }
    abc();
    </script>
      

  6.   

    楼主 php是服务器脚本 JS是客户端脚本。你的想法是行不同的。只能用AJAX
      

  7.   

    楼主 php是服务器脚本 JS是客户端脚本。你的想法是行不同的。只能用AJAX
      

  8.   

          当然楼主如果不想用ajax的话可以将两个页面php放入一个页面里面,用iframe来做。整个页面刷新就行了。
    不过确实没什么实用性。
      

  9.   


    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值。
    你试着运行下,看是不是你想要的结果。
      

  10.   

    关键错误, 是把服务器脚本和客户端脚本混在一起了, 解决这个问题用ajax