将PHP会话数组值转换为Javascript

时间:2011-10-04 08:35:53

标签: php javascript jquery

我在PHP会话中存储了数组值。

现在我想要检索这个数组并将其转换为javascript aray。

这是我设置PHP会话的方式:

var listone = ["one", "two", "three"];

function setSession(listone){
    $.get(
        "setSession.php",
        {listone:listone} 
    );
}

因此,如果设置了这些值并刷新页面,我会检查会话是否已设置。如果设置,我想做这样的事情:

<?php
session_start();
if(isset($_SESSION['listone']))
{
?>
  listone = Array('<?php echo json_encode($_SESSION['listone']) ?>');
<?php
}
?>

当我这样做时,'listone'数组就像这样显示我:

listone[0] = [
listone[1] = "
listone[2] = o
listone[3] = n
listone[4] = e
listone[5] = "
.... etc

我知道我做错了什么。 这是我在PHP会话中存储数组的方式吗? 要么 这是我将其检索回JS的方式吗?

感谢您的任何指示。如果指导得当,我愿意挖掘更多:)

2 个答案:

答案 0 :(得分:1)

尝试将您的php文件更改为此文件或类似文件

<?php
session_start();
$result = array();

if(isset($_SESSION['listone'])) {
   $result['listone'] = $_SESSION['listone'];
}

echo json_encode($result);
?>

json_encode将您的数组转换为json数组,您无需创建新数组。

另外,我会将所需的变量放入哈希数组中,只返回该数组的json_encode,以便拥有更清晰的代码。

答案 1 :(得分:1)

你可能试图在这里做两件事之一 - 要么与AJAX有关,要么是JS响应,要么你试图直接在JS中访问会话变量。

如果您只是希望将PHP变量切换为JS可读数组,则可以执行以下操作:

json_encode($_SESSION['myarray']);

这需要是一个可读的响应&amp;由JS脚本在其他地方解释(例如,AJAX响应)。

PHP会话变量无法通过JS直接访问,但是,您可以在PHP中构建JS,将两者包装在一起,这样您就可以使用PHP输出填充了PHP会话变量中保存的数据的JS。这里的关键是代码的顺序,以及JS的结构 - 即你可能想要引用一个全局JS变量,这样你的其他JS可以访问这些值,或者调用一个函数等......

所以,你可以:

session_start();
if(!isset($_SESSION['myarray'])){
         $_SESSION['myarray']=array('one', 'two', 'three');
}

echo "<script type='text/javascript'>

var myJSvariable = new Array();";

foreach($_SESSION['myarray'] as $key=>$value){
      echo "myJSvariable[".$key."]=".$value.";";
}

echo "</script>";