2012-11-22 30 views
5

Muszę przekazać potencjalnie dużą ilość danych z jednej strony na drugą za pomocą technik po stronie klienta. Jest to w zasadzie lista identyfikatorów, które zostaną wyświetlone na stronie docelowej. Oczywiście ciąg zapytania nie jest odpowiedni, ponieważ mogą istnieć tysiące identyfikatorów, więc pomyślałem, że mogę użyć javascript do dynamicznego dodawania formularza (method = GET), zapisania identyfikatorów w ukrytym polu i przesłania formularza na stronę docelową. Wydaje się, że działa dobrze, ale chcę wiedzieć, czy jest lepszy sposób na zrobienie tego - to wydaje się nieco hacky.Przekazywanie danych z jednej strony WWW do innej

+2

Zdajesz sobie sprawę, że formularz z metodą GET, gdy zostanie opublikowany, po prostu wyśle ​​dane do łańcucha zapytania, tak czy inaczej? – slebetman

+0

jest jakiś problem z wysłaniem daty takiej jak 'index.php? Id1 = v1 & id2 = v3 & id3 = v3' ... ?? jeśli nie, to znam sztuczki ... – NazKazi

+0

@slebetman - Nie zdawałem sobie z tego sprawy. Czy to znaczy, że powinienem użyć postu lub jquery.post(), jak sugeruje Simon poniżej? – HammerIp

Odpowiedz

1

Thusends of IDs to nie tyle. Jeśli identyfikatory są identyfikatorami GUID, będzie to Nx32 bajtów. Możesz użyć posta jQuery, który uruchomi Post HTTP.

+0

Właśnie to przetestowaliśmy, a dane są przekazywane na stronę itp., Ale nie ładują strony docelowej w przeglądarce. Potrzebuję strony docelowej do załadowania i wyświetlenia niektórych danych w oparciu o identyfikatory, które przekazuję. Użycie funkcji http get działa idealnie, ale staram się uniknąć masywnego zapytania zawierającego tysiące identyfikatorów. Czy jest jakiś sposób na zrobienie tego? – HammerIp

+0

Użyj zwykłego testu POST, pomiń jQuery AJAX –

7

Korzystając html5 storage api można to osiągnąć ...

Z HTML5, strony internetowe mogą przechowywać dane lokalnie w przeglądarce użytkownika.

Wcześniej odbywało się to za pomocą plików cookie. Jednak przechowywanie w Internecie jest bezpieczniejsze i szybsze. Dane nie są uwzględniane przy każdym żądaniu serwera, ale używane TYLKO na żądanie. Możliwe jest również przechowywanie dużych ilości danych, bez wpływu na wydajność witryny.

Dane są przechowywane w parach klucz/wartość, a strona internetowa może uzyskać dostęp tylko do danych przechowywanych przez siebie.

  • localStorage - przechowuje dane bez daty ważności
  • sessionStorage - przechowuje dane dla jednej sesji

Przykład:

Aby ustawić

window.localStorage.setItem("name",document.getElementById("name").value); 

Aby uzyskać

var name = window.localStorage.getItem("name"); 

Więcej patrz odnośnik HTML5 storage

Uwaga: Web pamięci jest obsługiwana w Internet Explorer 8+, Firefox, Opera, Chrome, and Safari.

+0

Niestety, powinienem był określić, że jest to środowisko korporacyjne, a przeglądarka to IE7. Dzięki i tak. – HammerIp

+0

@HammerIp hmm, jego ok. – Talha

+0

@Talha, jeśli 'sessionStorage' jest wystarczające (pozwala przekazywać dane między stronami wyświetlanymi w tym samym oknie przeglądarki), a następnie rozważ użycie polyfill http://code.google.com/p/sessionstorage/który wydaje się, że działa na IE 7. –

Powiązane problemy