我在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的方式吗?
感谢您的任何指示。如果指导得当,我愿意挖掘更多:)
答案 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>";