2013-08-20 2 views
7

Ich entschuldige mich im Voraus, wenn dies bereits beantwortet wurde. Ich habe jetzt für ein paar Stunden gegoogelt, und ich habe immer noch nichts gefunden, was meine genaue Frage zu beantworten scheint.Übergeben eines großen JSON-Objekts an eine andere Seite in einem neuen Fenster.

Im Wesentlichen habe ich eine sehr komplexe/hoch gestylte Ansicht, die benutzerspezifische Daten anzeigt, die aus der Datenbank gezogen werden. Ich habe die Daten als JSON-Objekt erfasst und mit .data() an den Body meiner Seite angehängt. Ich habe eine Schaltfläche hinzugefügt, die das JSON-Objekt abruft und meine druckerfreundliche Seite in einem neuen Fenster öffnet. Ich möchte in diesem neuen Fenster auf das benutzerspezifische JSON-Objekt zugreifen/es bearbeiten können. (Dies würde alles auf der gleichen Domain sein.)

Die meisten der Lösungen, die ich gesehen habe, scheinen um ein neues, leeres Fenster zu öffnen. Ich will das nicht machen. Ich habe ein Layout für die Seite programmiert, und ich habe vor, javascript/css zu haben, das auch läuft. Ich habe Lösungen gesehen, die ein neues Fenster öffnen und dann document.write verwenden, was großartig wäre, wenn es einen Weg gäbe, ein bestimmtes Element auf der neuen Seite anzusprechen. Ich habe versucht, zum Beispiel:

x = window.open(url); 
x.document.write(myJson); 

, die das JSON-Objekt auf der neuen Seite gesetzt ist, aber vollständig wischt alles, was ich im Layout hatte.

Ich habe auch Lösungen gesehen, die vorschlagen, das Objekt zu stringifizieren und dann Base64 zu kodieren. Aber ich mache mir Sorgen über Einschränkungen der URL-Länge, da sie möglicherweise viele Daten auf dieser Seite sammeln, bevor sie auf die Schaltfläche klicken.

Ich habe auch Lösungen gesehen, die die Verwendung von lokalem HTML5-Speicher vorschlagen. Was ich wohl tun werde, wenn es keine bessere Lösung gibt. Allerdings führt HTML5 zu Problemen mit der Browserkompatibilität, und ich würde es vorziehen, sie nach Möglichkeit zu vermeiden.

Hier einige Beispiel-Code:

JSON-Objekt:

{ 
{ 
"name":"Percy Pea.", 
"bio":"Percy Pea was born in a pod, and lived there happily." 
}, 
{ 
"name":"James Cob", 
"bio":"James Cob was arrested for stalking." 
} 
} 

ich erfassen, dass, wenn sie vom Server als 'Daten' kommt zurück:

$("body").data("userData", data); 

In meinem Onclick für die druckerfreundliche Seitentaste, ich lade das JSON-Objekt:

var userData = $("body").data("userData"); 

So ist das machbar? Gibt es so einen Weg, um ein neues Fenster zu öffnen und dann Daten an ein bestimmtes Element in ihm anzulegen? Oder ... vielleicht auf eine andere Art, die ich nicht einmal in Betracht gezogen habe.

Vielen Dank im Voraus für jede Hilfe, obwohl ich auch sicher sein werde, die Antwort zu markieren, sobald es veröffentlicht ist.

Antwort

4

Sie die json in globalen Variablen in dem übergeordneten Fenster speichern und es in Ihrem Popup-Fenster Code verweisen

https://stackoverflow.com/a/87737/1755374

+0

Hah, du bist der Beste. Für jeden, der über diese Seite stolpert, konnte ich folgende Zeile verwenden: var userData = window.opener. $ ("Body"). Data ("userData"); In der Javascript-Datei der Seite im neuen Fenster geöffnet. Dies hat das JSON-Objekt erfolgreich abgerufen. –

Verwandte Themen