【问题标题】:saving variable value and retrieve it after page refresh [duplicate]保存变量值并在页面刷新后检索它[重复]
【发布时间】:2012-07-29 06:03:40
【问题描述】:

我有一个字符串值保存到一个变量中,我的网页在某个过程后自动重新加载。我需要知道即使在页面刷新后我是否可以获取存储在该变量中的值?

我正在使用 javascript 代码 window.location.reload() 刷新我的网页

如果我使用像 php 这样的服务器端脚本,它会起作用吗?

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    JavaScript:

    1. localStorage(仅限 HTML5 浏览器)- 您可以将其保存为页面本地存储限额的属性

    2. 保存在 cookie 中

    3. 将变量附加到 URL 哈希中,以便在刷新后通过 location.hash 检索它

    PHP

    1. 将其保存为会话变量,并在每次页面加载时通过 AJAX 检索它

    2. 将其保存在 cookie 中(如果您要 cookie 也可以使用 JS 方法)

    任何 PHP 方法都会很笨拙,因为您必须首先通过 AJAX 将变量的值发送到 PHP 脚本,然后在重新加载后通过 AJAX 检索它。

    【讨论】:

    • html5 浏览器在某种意义上我的浏览器是最新的..所以它应该可以工作,对吧?
    • 在这种情况下localStorage 绝对是要走的路。
    • 还有一件事..如何清除本地存储值??
    • 设置:localStorage.setProperty();删除:localStorage.removeProperty()
    【解决方案2】:

    您可以将其存储为 $_SESSION 变量。

    session_start();
    
    $myVar = null;
    
    // some code here
    
    if (!isset($_SESSION['myVar'])) {
        $_SESSION['myVar'] = "whatever";
    } else {
        $myVar = $_SESSION['myVar'];
    }
    

    【讨论】:

      【解决方案3】:

      您必须将此变量保存在 Cookie/Webstorage/Session 中。网页是无状态的。

      【讨论】:

        【解决方案4】:

        是的,您可以在服务器端将变量保存为 session 值或在客户端保存为 localstorage(或 cookie

        【讨论】:

          【解决方案5】:

          Cookie 是你的朋友:

          // Set a cookie or 2
          document.cookie = 'somevar=somevalue';
          document.cookie = 'another=123';
          
          function getCookie(name)
          {
              // Cookies seperated by ;   Key->value seperated by =
              for(var i = 0; pair = document.cookie.split("; ")[i].split("="); i++)
                  if(pair[0] == name)
                      return unescape(pair[1]);
          
              // A cookie with the requested name does not exist
              return null;
          }
          
          // To get the value
          alert(getCookie('somevar'));
          

          【讨论】:

            【解决方案6】:

            使用 javascript,您可以将该变量存储到 cookie 中(用户必须启用 cookie),然后再检索 cookie。

            方法是这样的:

            保存

            function setCookie(c_name,value)
            {
            var exdate=new Date();
            exdate.setDate(exdate.getDate() + 1);
            var c_value=escape(value);
            document.cookie=c_name + "=" + c_value;
            }
            

            检索

            function getCookie(c_name)
            {
            var i,x,y,ARRcookies=document.cookie.split(";");
            for (i=0;i<ARRcookies.length;i++)
            {
              x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
              y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
              x=x.replace(/^\s+|\s+$/g,"");
              if (x==c_name)
                {
                return unescape(y);
                }
              }
            }
            

            参考:http://www.w3schools.com/js/js_cookies.asp

            【讨论】:

            • mine 是一个简单的字符串,例如 "Market properties" ..
            • 好的。您仍然可以为此使用 cookie
            猜你喜欢
            • 2018-10-31
            • 1970-01-01
            • 1970-01-01
            • 2013-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多