2009-10-15 12 views
8

Pomoc!

Mam problem z zapaśnictwem AJAX, aby dla mnie zadziałała. Mam podzieloną na strony galerię z polami wyboru pod każdym obrazem i muszę przechowywać wartości pól wyboru w zmiennych sesji, jeśli użytkownik porusza się między stronami, więc kiedy przesyła formularz w dowolnym momencie, będzie zawierał wszystkie sprawdzone wartości na wszystkich stronach.

Używam tego kodu jQuery:

$(document).ready(function() { 
    $(".gal-nav").click(function() { 
     $.post("form-data-holder.php", $("#gallery-form").serialize()); 
    }); 
}); 

i plik form-data-holder.php mówi tak:

<?php 

    $_SESSION['saved'] = "true"; 

    foreach ($_POST as $key=>$value) { 
     if ($key !== "submit") { 
      $value = htmlentities(stripslashes(strip_tags($value))); 
      $_SESSION[$key] = $value; 
     } 
    } 

?> 

Mam dwie kwestie -

1) Jak mogę uzyskać wartości pól wyboru z funkcji serialize()? Myślę, że jest jeszcze coś, co mam do czynienia z czymś w rodzaju value [], aby wydobyć tę tablicę, a następnie przypuszczam, że przechowuję każdą z nich jako oddzielną zmienną sesji - chyba że mogę przechowywać tablicę jako zmienną $ _SESSION?

2) Zanim nawet zadzwonię z tym wszystkim, dodałem linię $ _SESSION ['saved'] = "true"; do skryptu php, a następnie echo klawiszy i wartości $ _SESSION na mojej stronie galerii, aby sprawdzić, czy żądanie AJAX działa. To nie jest. Ta $ _SESSION ['saved'] nie jest dodawana do listy echo zmiennych $ _SESSION po powrocie na stronę.

Każda pomoc zostanie bardzo doceniona !!

Odpowiedz

6

Musisz wywołać session_start() w pliku form-data-holder.php.

Za każdym razem, gdy wywołujesz ajax, żądasz nowej/świeżej strony z serwera, która nie jest świadoma żadnej z zmiennych ustawionych na stronie oryginalnej.

+0

Niestety, sesja została już rozpoczęta przez fakt, że użytkownik musi być zalogowany, aby w ogóle zobaczyć galerię. – rhodesjason

+0

Tak, ale kiedy wykonujesz wywołanie ajax, ładuje się nową stronę php, zaczynając od nowa, więc musisz ją tam wywołać. – jeroen

+0

Hmm OK Dodałem na górze pliku form-data-holder.php - bez zmian. Czy muszę jakoś powiązać tę sesję z inną sesją? – rhodesjason