我有一个javascript变量,它在.php脚本中以javascript函数递增,唯一的问题是当调用函数时页面重新加载,所以我需要一些方法来保存变量,当它是相同的页面重新加载或每次输入时。 我知道你可以进行本地保存,但我不确定当你离开网站时是否保存变量。
我的变量是在html脚本中。
<script type="text/javascript">
var varNumber= 1;
document.getElementById("varNumber").innerHTML = varNumber;
document.getElementByID("varNumber").value = varNumber;
function addToVariable() {
varNumber= varNumber+ 1 ;
document.getElementById("varNumber").innerHTML = varNumber;
}
</script>
答案 0 :(得分:2)
以下是三种客户端方法,用于在页面刷新期间保存JavaScript变量,并说明它们可以持久保存数据的时间。
使用现代浏览器保存JS变量非常简单方便。
var get = function (key) {
return window.localStorage ? window.localStorage[key] : null;
}
var put = function (key, value) {
if (window.localStorage) {
window.localStorage[key] = value;
}
}
保存并读取对象而不是简单变量:
localStorage.yourObject = JSON.stringify(obj);
obj = JSON.parse(localStorage.yourObject || "{}");
<强>持久性:强>
如果用户如此配置,用户代理可以自动删除 一段时间后存储的数据。
例如,可以将用户代理配置为处理第三方 本地存储区域作为仅会话存储,删除数据一次 用户已关闭可以访问它的所有浏览上下文。
这可能会限制网站跟踪用户的能力,如网站 然后只能跨多个会话跟踪用户 当他对网站本身进行身份验证时(例如通过购买) 或登录服务)。
但是,这也会长期降低API的实用性 存储机制。它还可以使用户的数据处于危险之中 用户并不完全理解数据过期的含义。
参考文献:
使用Cookie保存变量:
function createCookie(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=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
<强>持久性:强>
会话Cookie - 这些是临时的,并在您关闭时被删除 在会话结束时使用您的浏览器。
持久性cookie - 这些仍然存在于客户端硬盘驱动器上,直到它们为止 被删除或过期。
这最终取决于用户。他们可能是偏执狂 cookie和本地存储,并将它们设置为仅会话或无 所有
参考:Set cookie and get cookie with JavaScript
window.name
您还可以使用窗口名称window.name
来使用JavaScript session存储信息。
<强>持久性:强>
只有使用相同的窗口/标签时,此功能才有效。
答案 1 :(得分:1)
您可以在客户端使用localStorage
<script>
localStorage.setItem("mykey",99); // set a variable
var varNumber = localStorage.getItem("mykey"); // retrieve variable
</script>
答案 2 :(得分:0)
您可以使用AJAX来执行PHP,例如:
<?php
session_start(); $r = array();
if(isset($_POST['holdNumber'])){ // assumes {holdNumber:numberHere} sent through AJAX
if(preg_match('/^\d+$/', $_POST['holdNumber']){
$r['heldNumber'] = $_SESSION['holdNumber'] = $_POST['holdNumber'];
}
else{
// holdNumber hack
}
}
elseif(isset($_POST['load'])){
if(+$_POST['load'] === 1){ // assumes sending {load:1} in AJAX
if(isset($_SESSION['holdNumber']){
$r['heldNumber'] = $_SESSION['holdNumber'];
}
else{
$r['heldNumber'] = $_SESSION['holdNumber'] = 0;
}
}
else{
// load hack
}
}
echo json_encode($r);
?>