仅在 Firefox 上出现会话存储错误

Session Storage error on firefox only

我的代码在 Chrome 和 Edge 中运行良好,但我在 Firefox 中遇到此错误:

TypeError: 'key' called on an object that does not implement interface Storage

function goToNextStep() {
  $.post("../manager.php", {
    dados: sessionStorage,
    action: "save"
  }, function(response) {
    if (response === "1") {
      $.ajax({
        type: "GET",
        url: "../final.php",
        success: function(data) {
          $('#content').html(data);
        }
      });
    }
  });
}

您正试图在 AJAX 请求中传递 整个 sessionStorage 对象。不要那样做。而是拉出您需要的特定密钥。像这样:

function goToNextStep() {
  $.post("../manager.php", {
    dados: {
      foo: sessionStorage.getItem('foo'),
      bar: sessionStorage.getItem('bar')
    },
    action: "save"
  }, function(response) {
    if (response === "1") {
      $.ajax({
        type: "GET",
        url: "../final.php",
        success: function(data) {
          $('#content').html(data);
        }
      });
    }
  });
}

我还建议您 return JSON 而不是纯文本,因为后者可能会导致空格问题,从而导致意外结果。它的类型也更好,所以你可以 return 一个布尔状态标志,例如:

if (response.success) {
  // your logic here...
}

我能够通过以下解决方法解决此问题:

function goToNextStep() {
  $.post("../manager.php", {
    dados: JSON.parse(JSON.stringify(localStorage)), // <----- change
    action: "save"
  }, function(response) {
    if (response === "1") {
      $.ajax({
        type: "GET",
        url: "../final.php",
        success: function(data) {
          $('#content').html(data);
        }
      });
    }
  });
}