如何添加项目到javascript数组,可以在另一个页面上访问
How to add items to javascript array that can be accessed on another page?
我有一个问题。我创建了一个php网站,每个项目都有一个"请求报价"按钮。在点击按钮,我希望项目名称被添加到一个数组(这是我通过Javascript做)。随后,数组将被添加到contact.php上的请求表单"message"字段中。我用了这个-
<script language="javascript">
// Empty array
var empty = [];
// Array containing initial elements.
var arrayitem= ['hello'];
alert(arrayitem[1]);
function myFunction(item) {
arrayitem.push(item);
var Items='';
for (var i = 0; i < arrayitem.length; i++) {
Items=Items+','+(arrayitem[i]);
alert(Items);
};
document.getElementById("message").value=arrayitem[1];
}
</script>
在header.php页面,我包括在每个页面。我还有两页- 1页。php-包含计算机作为项和2. software .png-包含软件作为项。
现在的问题是,当我从一个页面添加项目时,它们被附加到数组中,它工作得很好,但是当我导航到另一个页面时,从上一页添加的项目从数组中删除。此外,我不能看到数组项目在"contactus.php的消息字段。"请帮助
你可以尝试使用浏览器的localStorage
在页面访问之间存储数据。
在header.php中试试这个JavaScript:
localStorage.setItem("preference", "10");
然后在联系人页面试试这个:
console.log(localStorage.getItem("preference"));
你应该在浏览器控制台中看到"10"。
关于localStorage的更多信息:http://diveintohtml5.info/storage.html
JavaScript是一种客户端脚本语言,它不是为在页面请求之间持久化变量值而设计的。如果您想访问另一个页面上的JavaScript变量,您必须将它们与对新页面的请求一起传递,以便新页面可以恢复它们。
除了将它与请求一起发布到下一页之外,在较新的浏览器中,您可以使用localStorage:
// Store the array
var array = [1, 2, 3];
localStorage['array'] = JSON.stringify(array);
// Retrieve the array
var storedArray = JSON.parse(localStorage['array']);
在较旧和较新的浏览器中,您可以使用cookie:
// Store the array in a cookie
var array = [1, 2, 3];
var jsonArray = JSON.stringify(array);
setCookie('mycookie', jsonArray , 1);
function setCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = '; expires='+date.toGMTString();
}
else var expires = '';
document.cookie = name+'='+value+expires+'; path=/';
}
// Retrieve the array from a cookie
var jsonArrayFrom Cookie = JSON.parse(getCookie('mycookie'));
function getCookie(name) {
name += '=';
var cookies = document.cookie.split(';');
for(var i=0;i < cookies.length;i++) {
var cookie = cookies[i];
while (cookie.charAt(0)==' ') cookie = cookie.substring(1, cookie.length);
if (cookie.indexOf(name) == 0) return cookie.substring(name.length, cookie.length);
}
return null;
}
尝试在javascript上使用cookie,然后在PHP上使用$_COOKIE var检索。
http://www.php.net/manual/en/features.cookies.php问候。
您可以通过PHP将信息写入cookie并通过JavaScript读取它们,在本例中假设使用jQuery:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"/>
<script src="http://cachedcommons.org/cache/jquery-cookie/0.0.0/javascripts/jquery-cookie.js"/>
</head>
<body>
<h1>Cookie</h1>
<?php
$expire = time() + 60 * 60 * 24 * 30;
setcookie('some_cookie', "fnord", $expire);
?>
<script type="text/javascript">
console.log($);
$(document).ready(function () {
alert($.cookie("some_cookie"));
});
</script>
</body>
</html>
如果你只需要支持现代浏览器,你最好使用localStorage,那里也有可用的库来防止你重新发明轮子。
谢谢大家的解决方案。我使用sessionStorage来存储项目。并在联系页面上检索它们。我正在提供代码。也许它能帮助某人包含在header.php中-
<script language="javascript">
function myFunction(item) {
sessionStorage.setItem(item,item);
var keyval=sessionStorage.item;
for(var i = 0; i < sessionStorage.length; i++)
{
var keyName = sessionStorage.key(i);
var itemvalue = sessionStorage.getItem(keyName);
alert(keyName + " = " + itemvalue);
}
}
</script>
和in contact page-
for(var i = 0; i < sessionStorage.length; i++)
{
var keyName = sessionStorage.key(i);
var itemvalue = (i+1)+"-"+sessionStorage.getItem(keyName);
document.contact.message.value=document.contact.message.value+"'n"+itemvalue ;
}
希望它能帮助!!!!谢谢! !
您应该保存数组并使用表单或其他方法将其发布到另一个页面。Javascript不被持久化。
你可以使用Webstorage在页面间持久化。从数组中创建一个JSON对象,如下所示:
var myArrayString = JSON.stringify(myArray);
并将其存储在webstorage:
中的一个键中sessionStorage.setItem('arrayStore',myArrayString);
您可以在另一页读取此键:
sessionStorage.getItem('arrayStore'); //returns 'myArrayString'
…或者直接引用sessionStorage对象:
sessionStorage.arrayStore; //returns 'myArrayString'
- AngularJS:如何用同一对象的另一个属性访问一个属性
- 从AngularJS中的另一个文件中的控制器访问服务
- 如何从AngularJs中的另一个控制器访问控制器
- 从另一个窗口访问document.getElementById
- 从另一个文件访问函数的返回值
- 从HTML中的另一个文件访问javascript方法
- Meteor - 从另一个模板事件处理程序访问 DOM 元素
- Java,nashorn访问另一个js文件
- 从另一个(初学者内部)访问嵌套的javascript函数
- 从另一个 javascript 文件访问 main() 函数
- 如何从一个组件访问另一个组件的状态
- 如何将从GWT编译的JS添加/访问到另一个外部HTML / JS项目中
- 如何将链接状态设置为在用户访问另一个页面之前保持
- Meteor:访问另一个集合,每个块中有一个id
- 访问来自另一个函数的函数结果
- 如何使用jQuery访问属于函数内部另一个函数的对象的属性
- 如何在另一个java脚本函数中访问java脚本中动态html表中单元格的动态赋值
- 访问一个控制器的ng隐藏值以在全局控制器中操纵另一个控制器中的ng样式
- 从另一个浏览器访问一个浏览器中的html文档
- 如何从另一个域访问 iframe 的元素