PHP / JS - 如何将数组移动到另一个不使用URL,FORM,SESSION,COOKIE参数的页面

时间:2014-08-16 08:14:08

标签: javascript php arrays

我正在动态地跟踪用户在网络上的方式。最后5个访问过的页面显示为Breadcrumb导航,如下所示:

DogDatabase>> DogName>>用户名>> KennelName>> DogName>>等....

它动态生成的访问页面路径...这个脚本是用PHP编写的,效果非常好。

现在我正在使用SESSION将访问过的页面数组移动到另一个页面。还尝试了JS中的LocalStorage。

我的问题是,如果用户的网络窗口更多。该数组是为我的网站的所有实例(窗口)共享给1个用户。

所以它看起来像这样:

w1 - widnow 1

w2 - window 2

w1.DogDatabase>> w1.DogName>> w2.UserName>> w1.KennelName>> w2.DogName

但我希望这样:

w1.DogDatabase>> w1.DogName>> w1.KennelName

w2.UserName>> w2.DogName

我的问题是: 如何将访问过的页面数组移动到另一个页面,以便为PHP或JS中的1个用户特定于我的Web的每个窗口?

谢谢你, 安德鲁

编辑 - !已解决! :

所以我已经完成了痕迹导航:)

我有这样的多维数组:

array (
[0] : (nameOfPage,pageURL)
[1] : (nameOfPage,pageURL)
etc..
)

我使用sessionStorage将此数组转换为另一个页面。令人敬畏的是,sessionStorage对于Web的每个窗口/选项卡都是唯一的,因此我不需要识别窗口/选项卡。关闭窗口/选项卡后,将清除存储空间。下一个好功能是当用户单击BACK按钮时,sessionStorage将返回到该页面上的hystorical值。当页面从浏览器wia关闭pannels函数重新打开时,sharedStorage也是当前值。太棒了。

将数组保存到sessionStorage:

sessionStorage.setItem(key, JSON.stringify(myarray));

从sessionStorage读取数组:

var myarray = JSON.parse(sessionStorage.getItem(key));

变量键是名称:

var key = 'navigation';

2 个答案:

答案 0 :(得分:0)

sessionStorage是最佳解决方案,我建议您使用a session storage management library like this one。这不仅可以帮助您存储简单的文本/数字数据,还可以存储像这样的整个数组。

$.setSession('key','value');
$.setSession('array1',[1,2,3,4,5]);
$.setSession('array2',Array(1,2,3,4,5));

要获取此数据,您只需使用getSession函数

$.getSession('key'); // returns 'value'
$.getSession('array1'); // returns [1,2,3,4,5]

答案 1 :(得分:-1)

谢谢你的提示亚当。它不是完全解决方案,但它是正确的方式。

我将使用sessionStorage而不是localStorage。 SessionStorage是每个窗口/选项卡的separetd,当窗口/选项卡关闭时,它会被清除。

所以我不需要检测窗口(不需要生成窗口/标签的id)并且不需要关心清除存储。 LocalStorage是所有窗口/选项卡共享的,需要手动清除(关闭浏览器不会清除localStorage)。