在会话中存储数组?我该怎么做?

时间:2011-11-23 18:25:35

标签: javascript session session-state

所以我有一个动态创建的播放列表,用户通过搜索歌曲创建。当页面刷新时,我希望这样做,所有的歌曲都停留在那里。

存储播放列表的最佳方式是什么?

我尝试过使用Persist.js,但存储的数组如下:

[["title":"song name", "artist":"someartist"], ["title":"another song", "artist":"one more"]]

始终使数组显示为:

["title", "song name", "artist", "someartist", "title"...]

不是我想要的。如果播放列表变大,还不确定是否最好。

那么什么时候创建服务器会话会更好?或者只是将所有歌曲存储到数据库中?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以将数组保存为JSON对象,该对象只是存储为字符串。通过这种方式,您可以轻松地将其存储为会话变量。

$_SESSION['test'] = json_encode($myArray);

$loadedArray = json_decode($_SESSION['test']);

如果您希望将列表存储任何时间长度,我建议将其存储在数据库中,尤其是在您不知道列表有多大的情况下。或者,您可以在数组长度上设置一个上限并在说出前20个后丢弃所有曲目。

答案 1 :(得分:1)

您还可以将它们存储为URL哈希值,然后在页面加载时将其读入并加载歌曲。

如果通过PHP加载歌曲,您可以将它们设置为cookie,然后让PHP读取cookie。

此外,如果他们是通过PHP加载而你不想使用cookie,你可以让php回显内联脚本(以便在整页加载之前执行),如果URL中有哈希值将用户重定向到哈希值已转换为GET值的页面,然后由PHP读取。