如何将项目添加到可以在另一个页面上访问的javascript数组?

时间:2013-04-18 11:26:40

标签: php javascript arrays

我有问题。我创建了一个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. computers.php-包含计算机作为项目和 2. softwares.png-包含软件作为项目。

现在问题是,当我从一个页面添加项目时,它们被附加到数组并且它工作正常,但是当我导航到另一个页面时,从上一页面添加的项目将从数组中删除..而且我无法在“contactus.php的消息字段”中看到araay项目。请帮助

6 个答案:

答案 0 :(得分:1)

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;
}

答案 1 :(得分:1)

您可以尝试使用浏览器的localStorage在页面访问之间存储数据。

在header.php中尝试此JavaScript:

localStorage.setItem("preference", "10");

然后在您的联系页面中尝试:

console.log(localStorage.getItem("preference"));

您应该在浏览器控制台中看到“10”。

以下是有关localStorage的更多信息:http://diveintohtml5.info/storage.html

答案 2 :(得分:0)

您应该使用表单或其他方法保存数组并将其发布到其他页面。 Javascript没有保留。

您可以将Webstorage用于中间页面持久性。从您的数组创建一个JSON对象,如下所示:

var myArrayString = JSON.stringify(myArray);

并将其存储在网络存储中的密钥中:

sessionStorage.setItem('arrayStore',myArrayString);

您可以在另一页中阅读此密钥:

sessionStorage.getItem('arrayStore'); //returns 'myArrayString'

...或者只是引用sessionStorage对象:

sessionStorage.arrayStore; //returns 'myArrayString'

答案 3 :(得分:0)

尝试在javascript上使用Cookie,然后使用$ _COOKIE var。

在PHP上检索它

http://www.php.net/manual/en/features.cookies.php

问候。

答案 4 :(得分:0)

您可以通过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,还有libaries可以阻止您重新发明轮子。

答案 5 :(得分:0)

全部感谢您的解决方案..我使用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>

并在联系方式页面 -

 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 ;
}  

希望它有帮助!!!! 谢谢大家!!