Wie man JavaScript-Objekte von einer Seite zur anderen übergibt

7

Ich möchte Javascript-Objekte von einer Seite an eine andere Seite weitergeben, damit jeder mir sagen kann, wie es geht?

Ist dies mit jQuery möglich?

    
Dipen 10.10.2011, 06:40
quelle

7 Antworten

15

Wenige Möglichkeiten

  1. Server Side Postback

    Halten Sie ein POST-Formular auf Ihrer Seite und speichern Sie Ihr serialisiertes Objekt in einer versteckten Eingabe und schreiben Sie es dann auf die andere Seite. Sie können diese Daten auf dem Server verarbeiten und höchstwahrscheinlich irgendwie in die Seite zurücklegen. Entweder als JavaScript-Objekt oder irgendetwas anderes.

  2. Clientseitige URL-Prüfung

    Machen Sie eine GET-Anfrage an Ihre andere Seite, indem Sie Ihr serialisiertes Objekt an URL als:

    anhängen

    Ссылка

    Diese andere Seite kann dann leicht ihre URL analysieren und die Daten mit Javascript deserialisieren.

  3. Was ist in einer window.name = lokalen cross-page-Sitzung

    ?

    Dies ist eine spezielle Technik, die auch in einer speziellen JavaScript-Bibliothek verwendet wird, die window.name als Wörterbuch zur Verfügung stellt Sie können viele verschiedene Objekte darin speichern und sie als lokale Seitenübergreifende Sitzung verwenden. Es hat einige Größenbeschränkungen, die Sie betreffen können, aber überprüfen Sie die verknüpfte Seite dafür und testen Sie Ihre Browser.

  4. Lokaler HTML5-Speicher

    HTML5 bietet die Möglichkeit eines lokalen Speichers, den Sie genau für diese Zwecke verwenden können. Aber die Verwendung hängt stark von den Anforderungen Ihres Browsers ab. Moderne Browser unterstützen es jedoch und Daten können auch nach dem Neustart von Browsern oder Computern wiederhergestellt werden ...

  5. Cookies

    Sie können immer Cookies verwenden, aber Sie stoßen möglicherweise an ihre Grenzen. Heutzutage sind Cookies nicht die beste Wahl, obwohl sie die Möglichkeit haben, Daten länger als die aktuelle Windows-Sitzung zu speichern.

Javascript Objekt Serialisierung

Sie müssen natürlich in einigen Fällen eine Art von (De) Serialisierer auf Ihrer Client-Seite verwenden. Deserializer sind ziemlich einfach zu finden (jQuery enthält bereits eine großartige Funktion $.getJSON() ) und sind wahrscheinlich bereits Teil Ihrer aktuellen Javascript-Bibliothek (um eval() nicht einmal zu erwähnen).

Aber für ein Objekt zur JSON-String-Serialisierung würde ich die json2.js-Bibliothek empfehlen, die auch von John Resig . Diese Bibliothek verwendet in Browser implementierte JSON (De) Serialisierungsfunktionen, wenn sie vorhanden sind, oder verwendet eine eigene Implementierung, wenn dies nicht der Fall ist. Daher Empfehlung.

    
Robert Koritnik 10.10.2011 07:06
quelle
4

Das ist nur möglich, wenn die Seiten gleichzeitig existieren und eine Seite von der anderen Seite geöffnet wird, so dass Sie einen Verweis auf das andere Windows-Objekt haben.

Wenn Sie von einer Seite zu einer anderen navigieren, existieren sie nicht gleichzeitig, so dass Sie nicht so kommunizieren können. Sie müssten das Objekt in eine Zeichenfolge serialisieren, die Sie in der Anfrage senden können, z. B. das Senden von JSON in der Abfragezeichenfolge.

Es gibt verschiedene Möglichkeiten, Daten persistent zu halten, wie in der Abfragezeichenfolge, Post-Daten, Cookies, Fenstername oder lokalem HTML5-Speicher, aber alle diese Methoden können nur String-Werte beibehalten, keine Javascript-Objekte.

    
Guffa 10.10.2011 06:48
quelle
2

Dies ist möglich, und Sie haben ein paar Möglichkeiten.

Lokaler Speicher

Kann in jeder Phase hinzugefügt / editiert / entfernt werden und auf eine Domäne zugegriffen werden. (funktioniert nicht nativ in ie6 und ie7, aber es gibt Work arounds dafür)

Das Fensterobjekt

Ich würde eine massive Hohlsaum um dies nicht die beste Lösung, es ist überhaupt nicht sicher, so dass es nur für Dinge, die nicht privat gehalten werden müssen. window.name = { "json" : "object"} , das dann auf der folgenden Seite in der Eigenschaft window.name verfügbar ist.

    
Matt Sain 10.10.2011 07:05
quelle
1

Ich glaube, dass die einzige Möglichkeit, ein Javascript-Objekt von einer Seite an eine andere zu übergeben, darin besteht, es in eine Zeichenfolge zu serialisieren und es in der URL zu übergeben. Zum Beispiel, wenn Sie ein Objekt haben

%Vor%

Sie können JSON-js verwenden, um es zu serialisieren und beispielsweise http://mysite.com/?data=serialization zu übergeben. Nachdem Sie die Seite geladen haben, müssen Sie sie zum Beispiel über $.parseJSON() deserialisieren.

    
freakish 10.10.2011 06:48
quelle
1

Wenn Ihre Anwendung Sitzungen verwendet, können Sie sie serialisieren (wie bei anderen Antworten), und sie dann an den Server senden, wo sie in einer Sitzungsvariablen gespeichert ist. Auf der nächsten Seite rufen Sie es aus der Sitzungsvariablen ab.

    
Greg Pettit 10.10.2011 06:54
quelle
0

In JavaScript sind normalerweise alle Variablen nur in einem Bereich vorhanden, der für diese Seitenladung eindeutig ist. Sie bleiben nicht zwischen verschiedenen Seiten bestehen, wenn eine neue Seite geladen wird.

Die Ausnahmen davon sind

  1. Cookies.
  2. Lokaler Speicher.

Cookies sind wirklich Browser-übergreifend, aber in Bezug auf die Größe sehr begrenzt. Sie sollten nicht erwarten, mehr als 4kB Cookies für eine Seite zuverlässig speichern zu können; Tatsächlich sollten Sie wahrscheinlich nicht mehr als 1kB verwenden. Cookie-Daten verlangsamen das Laden jeder Seite und anderer Anfragen, daher sollte es sparsam verwendet werden.

Es gibt verschiedene Arten von lokalem Speicher , die für Javascript verfügbar sind, aber die einzige praktische browserübergreifende Implementierung ist HTML5-Webstorage , das in allen modernen Browsern (IE8 +, FF, Chrome, Safari usw.) implementiert ist, aber insbesondere nicht in IE6 oder IE7 implementiert ist, wenn das wichtig ist.

Beide Ansätze speichern einen Wert im Browser des Benutzers, der persistent gemacht werden kann, so dass er von Seiten derselben Website geschrieben und gelesen werden kann, sogar zwischen Seitenaufrufen (und sogar oft zwischen Browsersitzungen) oder Computer neu gestartet).

    
thomasrutter 10.10.2011 07:04
quelle
0

Ich habe vor einiger Zeit eine Bibliothek geschrieben, die die meisten js-Objekte im lokalen Speicher speichern kann. Zum Beispiel Instanzen Ihrer Prototyp-Klassen, mit Verweisen auf andere Objekte, Selbstreferenzen enthalten. Beachten Sie, dass IE-Unterstützung glanzlos ist.

    
vise 15.02.2014 09:28
quelle

Tags und Links