2011-04-15 25 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