Ich habe das folgende Setup, und ich muss wissen, wie man den Status beharrt.JavaScript Variable Scoping - Persistenzzustand?
1.) Eine externe Webseite verwendet Ajax zum Laden und Anzeigen einer .jsp-Datei, die Javascript enthält. 2.) Wenn dieses Rendering abgeschlossen ist, muss JavaScript in der JSP-Datei aufgerufen werden, um eine Aktion basierend auf den beim Rendern aufgetretenen Ergebnissen auszuführen. Insbesondere führt das Dokument eine Aktion für $ (document) .ready aus, und diese Aktionen legen fest, was bei späteren Funktionsaufrufen getan werden muss.
Die Frage, die ich habe, ist dies: Wie behalte ich die Daten und den Zustand, der erstellt wird, wenn die Seite geladen wird? Ich habe versucht, so etwas wie dieses:
Extern: ajax
Interne test.jsp
var saveMe = {};
function getsCalled()
{
saveMe = {'a':function(){return false;}};
}
function needsData()
{
//???
}
späteren test.jsp ...
External:
needsData();
Nichts, was ich scheinen zu versuchen zu arbeiten. Was wäre der beste Weg, den Staat in dieser Situation zu beharren?
'needsData' hat in Ihrem Beispiel Zugriff auf die Variable' saveMe'. Was bedeutet "Nichts [...] funktioniert"? – Blixt
Kein Versuch, Daten zu speichern, funktionierte. needsData hat keinen Zugriff auf saveMe. in getsCalled(), ich NeedsData.saveMe = {}, um dieses Problem zu beheben. –
Ich bin mir nicht sicher, aber es scheint, dass Sie die NeedsData-Funktion laden, nachdem die Seite geladen wurde, aber Sie tun nichts, um zu sagen, was External ist, dass es eine Methode gibt. Sie benötigen eine globale Variable in extern und fügen dann needsData mithilfe des Prototyp-Schlüsselworts hinzu. z.B. myGlobalVar.prototype.needsData = function() {// ???} –