将多维javascript数组传递给另一个页面

时间:2013-04-09 05:45:57

标签: javascript forms multidimensional-array

我有一个像这样的多维数组

  • [0] string
  • [1] - > [0]串,[1]串,[2]串
  • [2]串
  • [3]串
  • [4] - > [0]串,[1]串,[2]串[3]串,[4]串,[5]的 INFO

(我希望这很有意义)

其中[1]和[4]本身是数组,我可以像myArray [4] [5]那样访问 INFO

嵌套数组的长度([1]和[4])可以变化。

我使用此方法在非常复杂的表单中存储,计算和分发数据。

并非所有在数组中存储的数据都会使其成为输入字段,因此在调用表单的post方法时,并非所有数据都会发送到下一页。

我想在下一页上以与第一页相同的方式访问数组。


思想:

方法1:

我想我可以将所有数据加载到隐藏字段中,发布所有内容,然后在第二页上获取这些值并将它们全部加载到数组中,但这需要超过一百个隐藏字段。

方法2:

我想我也可以使用.join()将整个数组连接成一个字符串,将其加载到一个输入中,发布它,并使用.split(“,”)将其重新打开。但是,如果我这样做,我不知道如何处理它的多维度,以便我仍然可以像第2页的myArray [4] [5]那样访问INFO。

我将使用Javascript访问该arrary,将在第2页上使用php访问第1页上的输入值。


我的问题是否有更好的方式来完成我需要的内容如何设置上面提到的方法2?



这解决了我的问题:

var str = JSON.stringify(fullInfoArray);
sessionStorage.fullInfoArray = str;

var newArr = JSON.parse(sessionStorage.fullInfoArray);

alert(newArr[0][2][1]);

2 个答案:

答案 0 :(得分:3)

如果可能,您可以使用sessionStorage使用JSON.stringify()来存储对象的字符串表示形式:

// store value
sessionStorage.setItem('myvalue', JSON.stringify(myObject));

// retrieve value
var myObject = JSON.parse(sessionStorage.getItem('myvalue'));

请注意sessionStorage有一个可以存储多少的上限;我相信它大概是2.5MB,所以你不应该轻易打它。

答案 1 :(得分:1)

将数据保存在PHP会话中,每当提交表单时,都会更新会话中的数据。 您生成的每个页面都可以使用此数据生成。

OR

如果您使用的是现代浏览器,请使用HTML5 localStorage。

OR

你可以继续你正在做的事情:)