【问题标题】:session storage value is null while I have given a value to this session storage in another JS file会话存储值为空,而我已在另一个 JS 文件中为此会话存储赋值
【发布时间】:2020-10-20 13:17:54
【问题描述】:

我有两个 JS 文件,在第一个中我使用 ajax 初始化会话存储,所以我想在我的另一个 JS 文件中使用这个会话存储值。但问题是,当我之前在第一个初始化 JS 文件中设置它时,另一个文件中的会话存储没有得到任何值。 我的示例代码如下所示:

JS文件1(初始化必须首先运行的JS文件):

   $.post(  
        "mypage.php",
        {    

        },function(data) {
   sessionStorage.setItem("data_kind", data.kind);
        }, 'json'
    ); 

js 文件 2 及其他(将使用已在 JS 文件 1 中初始化的 data_kind):

var my_data_kind = sessionStorage.getItem("data_kind");
console.log(my_data_kind); // it returns null and dont get any value!!!

【问题讨论】:

  • 您只能在 AJAX 请求完成后从存储中读取值
  • 谢谢,有什么办法可以解决这个问题吗?
  • 请添加php和jquery标签
  • $.post() 返回一个延迟/类似承诺的对象。在请求完成后使用它来链接要运行的东西。例如const myPagePromise = $.post(...) 然后在你的其他文件中myPagePromise.then(() => var my_data_kind = ... )
  • 菲尔,非常感谢,它对我有用,我的问题已经解决了。

标签: javascript jquery ajax session-storage


【解决方案1】:

您只能在 AJAX 请求完成后从存储中读取值。

$.post() 返回一个延迟/类似承诺的对象。在请求完成后使用它来链接要运行的东西。

例如,假设你的两个 JS 文件都包含在这个顺序中

<script src="the-one-that-does-the-ajax-request.js"></script>
<script src="the-one-that-reads-from-session-storage.js"></script>
// the-one-that-does-the-ajax-request.js

const myPagePromise = $.post("mypage.php", {}, data => {
  sessionStorage.setItem("data_kind", data.kind);
}, "json")
// the-one-that-reads-from-session-storage.js

myPagePromise.then(() => {
  var my_data_kind = sessionStorage.getItem("data_kind")
  console.log(my_data_kind)
})

【讨论】:

    【解决方案2】:

    首先你必须确保你的sessionStorage.setItem("data_kind", data.kind)已经被执行并且确保你有正确的或者导入js文件的顺序

    对我来说,当我调试我的代码时,我通常会编写 console.log('execute blabla', data) 来让自己确信我在该行中的代码正在以正确的顺序运行和加载。另外,不要忘记在功能完成后删除 console.log

    并且,关闭 sessionStorage 中的选项卡/窗口清除对象,如此处所述https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 2021-12-21
      • 2019-05-02
      • 2021-05-31
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多