【问题标题】:Session Storage in jsjs中的会话存储
【发布时间】:2018-05-22 01:03:50
【问题描述】:

您好,我是 JavaScript 的初学者,我想问一下是否可以会话我从服务器获取的数据。我想要会话的数据是我在网上搜索到的大多数人使用 SessionStorage 功能的“data.xhr.response”,但我不确定如何去做,任何建议都将不胜感激。

$(function() 
{
Dropzone.autoDiscover = false;

$('#file-upload').dropzone({
    maxFiles: 1,
    acceptedFiles: ".pdf,.doc,.docx,.html", 
    dataType: "json",
    success : function(data) {
        console.log(data.xhr.response);

    }
    });
});

【问题讨论】:

    标签: javascript


    【解决方案1】:

    会话存储与本地存储相同,唯一的区别是会话存储中存储的数据会在页面会话到期后自动清除。

    现在来回答你的问题。在您的 success 函数中,执行以下操作来存储数据:

    success : function(data) {
        console.log(data.xhr.response);
        sessionStorage.setItem('dataStored', data.xhr.response);
    
    }
    

    用法如下:

    // Save data to sessionStorage
    sessionStorage.setItem('dataStored', data.xhr.response);
    
    // Get saved data from sessionStorage
    var data = sessionStorage.getItem('dataStored');
    
    // Remove saved data from sessionStorage
    sessionStorage.removeItem('dataStored');
    
    // Remove all saved data from sessionStorage
    sessionStorage.clear();
    

    有关sessionStorage的更多信息,请查看此链接:https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

    【讨论】:

    • sessionStorage 是否只存储键值对象?
    • 值可以是任何东西
    • 存储任何东西,我用它来存储我需要在请求标头中传递给多个服务的值,例如用户的电子邮件。如果您使用的是 vuex,您也可以使用 vuex-persist 将状态保存在 localStorage 中。
    【解决方案2】:

    在您的情况下,您可以选择 sessionStorage 或 localStorage。两者都可以在浏览器中为您保存数据响应。区别只是localStorage不会过期而sessionStorage存储一个会话的数据(关闭浏览器选项卡时数据会丢失)。

    所以步骤是:

    1. 检查您的浏览器是否支持 webStorage:

      if (typeof(Storage) !== "undefined") {
          // Code for localStorage/sessionStorage.
      } else {
          // Sorry! No Web Storage support..
      }
      
    2. 实现本地存储:

      localStorage.setItem("lastname", "Smith");  // save data
      var user = localStorage.getItem("lastname"); // get data
      localStorage.removeItem("lastname");  // remove data
      
    3. 实现 sessionStorage:

      sessionStorage.setItem('lastname', 'Smith'); // save data
      var user = sessionStorage.getItem('lastname'); // get data
      sessionStorage.removeItem('dataStored');  // remove data
      

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      尝试阅读mozilla.org 上有关会话存储的这篇文章,它显示了它是多么简单。在您的情况下,它应该很简单:

      $('#file-upload').dropzone({
        maxFiles: 1,
        acceptedFiles: ".pdf,.doc,.docx,.html", 
        dataType: "json",
        success : function(data) {
            sessionStorage.setItem('xhr', data.xhr.response);
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 2016-09-07
        • 2014-07-10
        • 2021-05-31
        • 2015-11-21
        • 1970-01-01
        • 2019-05-02
        • 2014-05-03
        相关资源
        最近更新 更多