2013-08-20 34 views
7

Przepraszam z góry, jeśli odpowiedź została już udzielona. Przejrzałem Go przez kilka godzin i nadal nie znalazłem niczego, co mogłoby odpowiedzieć na moje dokładne pytanie.Przekazywanie dużego obiektu JSON do innej strony w nowym oknie.

Zasadniczo mam bardzo złożony/bardzo stylowy widok, który wyświetla dane specyficzne dla użytkownika pobierane z bazy danych. Przechwyciłem dane jako obiekt JSON, dołączając go do treści mojej strony przy użyciu .data(). Dodałem przycisk, który pobiera obiekt JSON i otwiera stronę przyjazną dla drukarki w nowym oknie. Chcę móc uzyskać dostęp/manipulować specyficznym dla użytkownika obiektem JSON z poziomu nowego okna. (To wszystko będzie w tej samej domenie.)

Większość rozwiązań, które widziałem, koncentruje się wokół otwierania nowego, pustego okna. Nie chcę tego robić. Zakodowałem układ strony i planuję mieć javascript/css, który również działa. Widziałem rozwiązania, które wymagają otwarcia nowego okna, a następnie użycia document.write, co byłoby świetne, gdyby istniał sposób na celowanie w konkretny element na nowej stronie. Próbowałem, na przykład:

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

Który ma umieścić obiekt JSON na nowej stronie, ale całkowicie wypiera wszystko inne miałem w układzie.

Widziałem również rozwiązania sugerujące stringifying, a następnie Base64 kodujące obiekt. Obawiam się jednak ograniczeń długości adresów URL, ponieważ potencjalnie mogą gromadzić wiele danych na tej stronie przed kliknięciem przycisku.

Widziałem również rozwiązania sugerujące używanie pamięci lokalnej HTML5. Co, jak sądzę, zrobię, jeśli nie będzie lepszego rozwiązania. Jednak HTML5 zwiększa problemy ze zgodnością przeglądarki, a ja wolałbym ich unikać, jeśli to możliwe.

Oto niektóre przykładowy kod: obiekt

JSON:

{ 
{ 
"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." 
} 
} 

przechwycić że gdy wraca z serwera jako 'dane':

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

W moim onclick dla osób przycisk strony do drukarki, pobieram obiekt JSON:

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

Czy to możliwe? Czy istnieje sposób, aby otworzyć nowe okno, a następnie wstawić/dołączyć dane do określonego elementu w środku? Lub ... może w jakiś inny sposób nawet nie brałem pod uwagę.

Z góry dziękuję za wszelką pomoc, ale na pewno też zaznaczę, zaznacz odpowiedź, gdy zostanie opublikowana.

Odpowiedz

4

można zapisać json w zmiennej globalnej w oknie nadrzędnym i odniesienie go w wyskakującym oknie kodu

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

+0

Hah, jesteś najlepszy. Dla każdego, kto natknął się na tę stronę, mogłem użyć linii: var userData = window.opener. $ ("Body"). Data ("userData"); W pliku javascript strony otwartej w nowym oknie. Pomyślnie pobrano obiekt JSON. –

Powiązane problemy