仅在 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);
}
});
}
});
}
我的代码在 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);
}
});
}
});
}