2012-05-22 37 views
1

我使用这个脚本重新加载一个DIV ID为新闻,DIV的自动更新不工作

<script type="text/javascript"> 
    var auto_refresh = setInterval(function() { 
     <? if ($lim >= 5) 
      $lim = 0; 
     else 
      $lim = $lim + 2; 

     if ($cnt == 1){ 
      $lim = 0; 
      $cnt += 1; 
     } ?> 

     $('#news').load('update.php?lim=<? echo $lim ?>'); 
    }, 10000); // refresh every 10000 milliseconds 
</script> 

的update.php containts此代码接收LIM值,

$lim=$_GET['lim']; 

但每过10秒后,'lim'值就会发送为0.我需要根据脚本中的条件更新'lim'值。

我使用echo命令检查update.php中的$ lim值。总是0.我的代码中的错误是什么?

+4

PHP是服务器端,JavaScript是客户端.... – ManseUK

+1

javascript内的'php' setInterval()'! – thecodeparadox

+3

您需要每次从服务器获取'$ lim',例如使用AJAX调用。使用该值,因为'$ lim'的第一个值在javascript中被硬编码。 – Hidde

回答

3

对于什么是服务器端/客户端,您似乎有点困惑。 $lim是一个PHP变量,因此仅在服务器端可用。您需要将您的逻辑改为javascript。试试这个:

var lim = <? echo $lim ?>; // assuming lim is always a number this will work. 
var cnt = 0; // just guessed at what this should be initially. 
var auto_refresh = setInterval(function() { 
    if (lim >= 5) 
     lim = 0; 
    else 
     lim = lim + 2; 

    if (cnt == 1){ 
     lim = 0; 
     cnt += 1; 
    } 

    $('#news').load('update.php?lim=' + lim); 
}, 10000); // refresh every 10000 milliseconds 

或者你可以换作,在穿过lim变量到PHP和接收回新值定时器的每个迭代一个AJAX请求的逻辑。

1

当您的页面被渲染时,PHP代码将只运行一次。它永远不会更新。在你的页面的代码看起来是这样的,当页面呈现:

<script type="text/javascript"> 
    var auto_refresh = setInterval(function() { 
     $('#news').load('update.php?lim=0'); 
    }, 10000); // refresh every 10000 milliseconds 
</script> 

如果你想改变你的JavaScript中的LIM参数的值,你将不得不计算它在JavaScript。你可以用PHP设置一个起始值,但是,你将只能从PHP获得一个这样的代码。