2011-04-15 26 views
0

这篇文章涉及到以前的那个我张贴,但现在的问题是不同的: https://stackoverflow.com/questions/5671809/selection-on-change-set-session-not-working/5671816#5671816是否有替代选择和重定向来设置会话?

当我选择在AJAX选择栏会话设置和刷新页面,显示会话中的价值。我不刷新怎么能拥有它,其中这样

$("#output").something 

检查每秒发送一个Ajax请求ajax.php?action=checksessionShipping和AJAX文件如果会话设置,或者如果没有设置虚假将返回一个真正的句柄。所以一旦它检测到会话被设置(顺便说一下,该会话将在$_SESSION['shipping']其在其他堆栈页上)。它将该值返回给div。

回答

0

请记住,这是快速和脏的代码。它不应该用于生产,因为它不是非常安全或可扩展的。但是,它会帮助您入门:

你可以做这样的事情在你的HTML:

<div id="mydiv"> 

</div><!-- END: #mydiv --> 

<script type="text/javascript" charset="utf-8"> 

    var myInterval = setInterval(function() { 

     $.ajax({ 
      url: 'ajax.php?action=checksessionShipping', 
      type: 'POST', 
      dataType: 'json', 
      data: {}, 
      complete: function(xhr, textStatus) { 
      //called when complete 
      }, 
      success: function(data, textStatus, xhr) { 

      if (data.session_set == true) 
       $("#mydiv").html(data.shipping); 
       clearInterval(myInterval); 

      }, 
      error: function(xhr, textStatus, errorThrown) { 
      //called when there is an error 
      } 
     }); 

    }, 1000); 

</script> 

而且像这样在你的PHP:

<?php 

session_start() 
$arrReturn = array('session_set' => FALSE); 

if (!empty($_SESSION['shipping'])) { 

    $arrReturn['session_set'] = TRUE; 
    $arrReturn['shipping'] = $_SESSION['shipping']; 

} 

echo json_encode($arrReturn); 
?> 
+0

什么毛病以上生产?除了在使用前始终清理会话文件? – 2011-04-15 22:30:04

+0

我只是说你应该在生产中使用它之前提供错误报告等。上面的代码并不一定是不安全的,但是当你开始修改它时,如果你不小心的话,它可能会很快变得不安全,使它在你的情况下工作。 – 2011-04-16 19:22:25