0

我有个问题。我创建了一个 php 网站,每个项目都有一个“请求报价”按钮。单击按钮时,我希望将项目名称添加到数组中(我正在通过 Javascript 执行此操作)。随后,该数组将添加到 contact.php 上的请求表单“消息”字段中。我用过这个-

<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 项目。请帮助

4

6 回答 6

1

You could try using the browser's localStorage to store data in between page visits.

Try this JavaScript in your header.php:

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

And then in your contact page try this:

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

You should see "10" in your browser console.

Here's more info about localStorage: http://diveintohtml5.info/storage.html

于 2013-04-18T11:46:42.417 回答
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;
}
于 2013-04-18T11:30:40.900 回答
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 ;
}  

希望能帮助到你!!!!谢谢大家!!

于 2013-04-19T06:27:32.033 回答
0

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

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

var myArrayString = JSON.stringify(myArray);

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

sessionStorage.setItem('arrayStore',myArrayString);

您可以在另一个页面中读取此密钥:

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

...或者简单地引用 sessionStorage 对象:

sessionStorage.arrayStore; //returns 'myArrayString'
于 2013-04-18T11:31:19.923 回答
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,还有一些库可以防止你重新发明轮子。

于 2013-04-18T12:11:33.450 回答
0

尝试在 javascript 上使用 cookie,然后在 PHP 上使用 $_COOKIE var 检索它。

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

问候。

于 2013-04-18T11:44:05.500 回答