【问题标题】:how to pass an array from one html to another html page?如何将数组从一个 html 传递到另一个 html 页面?
【发布时间】:2013-04-19 19:10:49
【问题描述】:

我将它用于 Phonegap 所以,我更喜欢 javascript 中的解决方案。

我找到了许多使用 PHP 的解决方案。这就是为什么我想把它说清楚。

我得到一个数组,它的值来自数据库。我想将此数组传递给第二个 HTML 页面。

要传递变量,正在使用以下代码...

编辑:

 window.location.href="1stpage.html"?var1=&value;

希望,我的编码是正确的。

如果我错了,请指导我。

参考建议的答案进行更改

Julio Meca Hansen 先生,我尝试实现同样的方法

 window.location.href='1st page.html?var1=5&var2=6'; 

并尝试通过在第二页上打印值来验证它...

console.log("value1: "+var1 +"value2: "+var2 ); 

唉!,我得到这个错误......

E/Web Console(12476): ReferenceError: Can't find variable: var1 at file:///android_asset/www/1st%20page.html?var1=5&var2=6:17 

【问题讨论】:

  • 您的代码无效 - JS 与 HTML 不同,您不要将它们包装在 <> 符号之间 ;)
  • 哎呀,对不起。我可能会被纠正!
  • 这是一种不寻常的情况,因为您可能会冒着用户更改数据的风险。通常你会在页面之间从数据库中重新检索数据。
  • @SLC 我不敢苟同——有时在页面之间传递字符串或数组可能很重要,例如多步表单(好吧,从技术上讲,您可以使用 cookie 来做到这一点,但这并不能使它们成为更安全)。分页也充分利用了在页面之间传递各种变量。
  • 我永远不会亲自这样做的原因有很多,例如服务器端验证,或者用户在浏览器中按下“返回”按钮,或者按下 F5,或者如果验证错误发生在第 1 页,而您在第 4 页,您必须回到那里并做一场噩梦,以确保在更正错误后按“下一步”时不会丢失第 2、3、4 页的信息。在我看来,有很多不必要的包袱,而且编程和维护也很麻烦。

标签: javascript html arrays cordova


【解决方案1】:

如果这个数组只被 JavaScript 使用,那么不要使用 cookie。 Cookie 用于存储服务器需要访问的信息,随意设置它们可以显着增加您的网络使用量!

改为使用 JavaScript 的 localStorage 接口。它受到所有现代浏览器的支持(IE7 及以下不被视为“现代”,尤其是 Windows Update 实际上会强制您更新),并且非常易于使用:

var someArray = [1,2,3,4];
if( !window.localStorage) alert("Sorry, you're using an ancient browser");
else {
    localStorage.myArray = JSON.stringify(someArray);
}

稍后,您可以检索它:JSON.parse(localStorage.myArray)

我希望这是您想要实现的目标。如果没有,请澄清您的问题;)

【讨论】:

  • Kolink 先生,能否请您告诉我我们使用 Window .local 存储的概念以及我们为什么要使用 JSON.stringify(someArray);... .当你想从网上获取一些数据时,我们会使用 JSON...我是对的???
  • localStorage 只能存储字符串,不会自动序列化值。 JSON 是一种将 JS 对象转换为字符串值的方法。通常它用于在线传递数据,但不一定。
  • Kolink,现在我应该如何将它连接到下一个 HTML 页面?
  • 您可以像这样使用location.href = '1stpage.html' 重定向,然后从那里检索localStorage 值。
  • Kolink,我希望你不介意我提问...我是 javascript 新手。所以这段代码将在第一页。 var someArray = [1,2,3,4]; if( !window.localStorage) alert("Sorry, you're using an ancient browser"); else { localStorage.myArray = JSON.stringify(someArray); } 在第一页以后我们应该使用下面的代码来检索它?? JSON.parse(localStorage.myArray)
【解决方案2】:

如果代码链接到图片,会更像这样:

<img src="images/img1.png" alt="" onclick="window.location.href='1stpage.html?var1=5&var2=6';">

修改它以满足您的需要:P

【讨论】:

  • Julio Meca Hansen 先生,谢谢你。在第一个音符上,我正在使用映射,对于点击...。在第二个音符上,我需要传递一个 ARRAY 不是变量。
  • 如果他/她想使用 $_GET 来获取值,第二页应该是 php,而不是 html。
  • 没关系...我写了var1=5,但你可以很容易地写a[sample1]=5等等。理想的做法是使用 http_build_query() 函数自动构建 URL 参数,但如果您使用纯 HTML,则需要手动指定每个参数,无论是数组还是简单值。
  • Julio Meca Hansen 先生,我正在使用基本的 html。我会尝试让你知道它是否有效。
  • 当然不是,你不能直接传递一个数组。 1stpage.html?var nameArray[]=results.rows.item(i).name" 不是有效参数。假设 i 等于 5,results.rows.item(i).name 等于 'dog'。您的参数类似于1stpage.html?nameArray[5]=dog。当您想要传递一些动态计算的元素时,您应该构建一个执行相同操作的 javascript 函数,而不是编写 onclick="window.location.href='1stpage.html?var1=5&amp;var2=6';" 您应该编写如下内容:onclick="goURL();",being goURL() 一个 javascript 函数做你想做的事.
【解决方案3】:

如果你不想使用 javascript:

<a href="1stpage.html?var1=5&var2=6">
   <img src="images/img1.png" alt="" />
</a>

【讨论】:

  • lolcat111,我不想要图像 src .....我只需要将数组值从 1 html 传递到另一个 html 页面。
  • 但是用户必须点击一个链接才能进入下一页... 图片只是装饰,你也可以只在链接中放文字。
【解决方案4】:

我假设您使用的是 jquery,但在普通的旧 js 中原理是相同的 - 使用 cookie,例如

how to store an array in jquery cookie?

这实际上存储了数组,而不是其他答案中描述的大量变量。

【讨论】:

  • matpol,我没有使用 JQUERY...而是使用 javascript。
  • 你读过答案吗?原理在普通的旧 javascript 'set a cookie' (w3schools.com/js/js_cookies.asp) 中是相同的 - 不要因为引用 w3schools 而标记我,但这是第一件事在谷歌上!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
相关资源
最近更新 更多