2012-05-22 101 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獲得一個這樣的代碼。