通过JavaScript将变量从一个html页面传递到另一个页面
我有两页-“第1页”和“第2页”。在第1页上有一个文本框,其值为100,最后有一个按钮 通过按下按钮,我希望javascript将文本框的值保存在全局(?)变量中,并跳转到第2页。对于“window.onload”,我需要第二个Javascript函数来提醒在第1页保存的值 以下是我的Javascript代码:通过JavaScript将变量从一个html页面传递到另一个页面,javascript,html,variables,undefined,global,Javascript,Html,Variables,Undefined,Global,我有两页-“第1页”和“第2页”。在第1页上有一个文本框,其值为100,最后有一个按钮 通过按下按钮,我希望javascript将文本框的值保存在全局(?)变量中,并跳转到第2页。对于“window.onload”,我需要第二个Javascript函数来提醒在第1页保存的值 以下是我的Javascript代码: <script type="text/javascript"> var price; //declare outside the function = global var
<script type="text/javascript">
var price; //declare outside the function = global variable ?
function save_price(){
alert("started_1"); //just for information
price = document.getElementById('the_id_of_the_textbox').value;
alert(price); //just for information
}
我总是得到全局可变价格的“未定义”值
我读了很多关于这些全局变量的书。在这个页面:但是我不能让它工作
为什么这不起作用?这里最好的选择是使用查询字符串“发送”值
- 所以第1页重定向到page2.html?someValue=ABC
- 第2页可以 读取查询字符串,特别是键“someValue”
如果这不仅仅是一个学习练习,你可能会想考虑这一点的安全含义。
全局变量在这里对您没有帮助,因为一旦重新加载页面,它们就会被销毁 您有几个不同的选择:
- 您可以使用像SammyJS或Angularjs和ui路由器这样的SPA路由器,这样您的页面是有状态的李>
- 使用会话存储来存储您的状态李>
- 将值存储在URL哈希上李>
localStorage
来解决。
下面是一个示例,我将使用prompt()
作为缩写
第1页:
第2页:
window.onload = alert(localStorage.getItem("storageName"));
您也可以使用cookie,但localStorage允许更多的空间,并且当您请求页面时,它们不会发送回服务器。有两个页面:
Pageone.html:
<script>
var hello = "hi"
location.replace("http://example.com/PageTwo.html?" + hi + "");
</script>
var hello=“嗨”
位置。替换(“http://example.com/PageTwo.html?“+hi+”);
PageTwo.html:
<script>
var link = window.location.href;
link = link.replace("http://example.com/PageTwo.html?","");
document.write("The variable contained this content:" + link + "");
</script>
var link=window.location.href;
链接=链接。替换(“http://example.com/PageTwo.html?","");
write(“包含此内容的变量:“+link+”);
希望有帮助 您误解了浏览器中JavaScript中的“全局变量”是什么。它们仍然绑定到设置它们的页面,它们不存在于其他页面中。全局变量仅对页面是全局的。也许可以看看url参数?@CBroe(和nha)谢谢!我不知道他们还被绑在书页上。我认为他们是“真正的”全球性的(对所有网页都有效)这是一个很好的解决方案,但你还没有解释为什么你应该使用它。OP不理解JS中的全局变量。@谢谢。一个真正伟大而简单的解决方案。:)我必须考虑(如LiamB所说)使用这个解决方案的一些基本安全性吗?@ CalbeeEdter,KRONDIED:LoalStury是每个域。其他网站无法访问您的localStorage,除非您包含来自其他来源(例如,Google Analytics)的其他脚本。会话存储在您关闭选项卡时过期。Cookie的过期时间比localStorage短。但是,如果数据包含敏感信息,您应该投资于后端交换方案,而不是直接存储在浏览器中,用户可以在我的页面2中查看、编辑等(就像cookies一样)。它说本地存储没有定义,我只是不存储它。。。在第2页上,
localStorage.getItem(“key”)
的结果是null
@LiamB提出了一个很好的观点。我的建议和他的建议都有一个安全含义,即用户可以在应用程序之外更改值:通过更改querystring参数、散列参数、localStorage数据或其他方式。您应该始终在数据的后端服务上进行验证。如何在简单html中使用会话?
window.onload = function() {
var getInput = prompt("Hey type something here: ");
localStorage.setItem("storageName",getInput);
}
window.onload = alert(localStorage.getItem("storageName"));
<script>
var hello = "hi"
location.replace("http://example.com/PageTwo.html?" + hi + "");
</script>
<script>
var link = window.location.href;
link = link.replace("http://example.com/PageTwo.html?","");
document.write("The variable contained this content:" + link + "");
</script>