2010-08-18 87 views
1

問候!PHP/AJAX檢查會話變量是否變化

我需要動態檢查會話變量是否每隔幾秒更改一次。例如,PHP會話變量「x」可能具有「1」的值,然後在五秒後具有值「2」。

PHP會話變量「x」通過使用表單進行更改。如果會話變量發生變化,我需要重新加載頁面。

如果會話變量發生變化而無需手動刷新頁面,如何重新加載頁面?

+0

您使用純JavaScript?任何圖書館? – krx 2010-08-18 02:49:16

+0

我不確定要使用什麼。我認爲JavaScript/AJAX將是一個好主意,但我需要一個代碼示例。 我在想一個簡單的if/then語句,但我需要獲取當前的PHP會話變量並使用JavaScript來刷新頁面,在不重新加載頁面的情況下完成所有這些操作。因此,使用AJAX檢查PHP會話變量並將其與當前值進行比較。 – 2010-08-18 02:51:59

回答

3

AJAX是一個很好的解決方案。只需向腳本發出請求,即可返回會話變量的當前值。如果不同,則重新加載。

所以,當您第一次加載頁面,你有什麼樣

注:本示例是依靠jQuery庫。

<script type="text/javascript"> 
    var currentSessionValue = <?php echo $_SESSION['something']; ?>; 
    // pseudo code 
    setTimeout(checkVariableValue, 5000); 
    function checkVariableValue() { 
     $.ajax({ 
      url: 'checkMyValue.php', 
      success: function(newVal) { 
       if (newVal != currentSessionValue); 
        currentSessionValue = newVal; 
        alert('Value Has Changed.'); 
        doSomethingDifferent_or_refreshPage(); 
       } 
     }); 
    } 
</script> 

checkMyValue.php

<?php 
    start_session(); 
    echo $_SESSION['myVariable']; 
?> 
+0

你能提供一些代碼作爲例子嗎?我是AJAX的新手。 – 2010-08-18 02:48:39

+0

謝謝。 PERFORM_AJAX_REQUEST會是什麼樣子?你知道是否可以在不調用其他文件的情況下獲得PHP會話變量? – 2010-08-18 02:52:46

+0

頁面加載完成後,唯一的方法是通過執行額外的請求來獲取$ _SESSION數據的當前狀態。 – sberry 2010-08-18 02:56:39

0

我不喜歡這在我的代碼

<script> 
    function myFunction() { 
    var name = document.getElementById("name").value; 
    var email = document.getElementById("email").value; 
    var password = document.getElementById("password").value; 
    var phone = document.getElementById("phone").value; 
    // Returns successful data submission message when the entered information is stored in database. 
    var dataString = 'name=' + name + '&email=' + email + '&password=' + password + '&phone=' + phone; 
    if (name == '' || email == '' || password == '') { 
     alert("Please fill all fields"); 
    } else { 
    // AJAX code to submit form. 
     $.ajax({ 
      type: "POST", 
      url: "signupAjax.php", 
      data: dataString, 
      cache: false, 
      success: function(html) { 

      var isRegistered = '<?php echo $_SESSION['name'];?>'; 
      var url = '<?php $url = $site_root.'index.php'; echo $url;?>'; 

      if(isRegistered.length > 0) 
      { 
       window.location = url; 
      } 
      else 
      { 
       alert(html); 
      } 

      } 
     }); 
     } 
     return false; 
    } 
</script>