如何添加项目到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'