我有问题。我创建了一个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项目。请帮助
答案 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 ;
}
希望它有帮助!!!! 谢谢大家!!