仅限firefox上的会话存储错误

时间:2017-05-25 08:46:23

标签: javascript jquery firefox session-storage

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

  

TypeError:' key'调用了一个没有实现接口存储的对象

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);
        }
      });
    }
  });
}

2 个答案:

答案 0 :(得分:1)

您正在尝试在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);
        }
      });
    }
  });
}

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

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

答案 1 :(得分:0)

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

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);
        }
      });
    }
  });
}