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>