/ / Chyba úložiska relácie iba na Firefoxe - javascript, jquery, firefox, session-storage

Chyba pri schvaľovaní relácie len v systéme firefox - javascript, jquery, firefox, session-storage

Môj kód funguje dobre v prehliadačoch Chrome a Edge, ale vo Firefoxe sa mi zobrazuje táto chyba:

TypeError: "kľúč" vyvolaný na objekte, ktorý neimplementuje rozhranie 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);
}
});
}
});
}

odpovede:

1 pre odpoveď č. 1

Snažíte sa prejsť okolo celý sessionStorage objekt v žiadosti AJAX. Nerobte to. Namiesto toho vytiahnite konkrétne klávesy, ktoré požadujete. Niečo také:

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

Navrhujem tiež, aby ste namiestoobyčajný text, pretože ten môže viesť k problémom s prázdnymi znakmi, ktoré spôsobia neočakávané výsledky. Je to tiež lepšie napísané, takže môžete vrátiť boolovský stavový príznak, napríklad:

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

0 pre odpoveď č. 2

Dokázal som to vyriešiť pomocou tohto riešenia:

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