Specyfikacja środowiska:
PHP 5.3.x przez FastCGI (config standardowy)
IIS 7.5 (standardowe ustawienia)
Mam dziwną sytuację i zastanawiam się cy ja to dobrze rozumiem.
Wykonuję AJAX request który uruchamia funkcję PHP która z kolei zapisuje konkretną daną do sesji (wykonanie funkcji trwa kilka sekund). W skrypcie JS funkcja nie czeka na zakończenie tego requesta tylko wykonuje od razu redirect (window.location = url). Gdy już strona WWW się przeładuje wyświetlam sobie tą zmienną zapisaną w sesji i niestety wartość jest pusta. Pseudo-kod dla jasności:
Po stronie przeglądarki w jQuery:
function saveToSession() { $.ajax({ type: "POST", url: 'session.php', data: 'action=saveValToSession' success: function(response){ nic sie tutaj nie dzieje, nie czekamy na wynik } }); window.location = 'index.php'; }
Po stronie serwera plik session.php:
if( $_REQUEST['action'] == 'saveValToSession' ) { $_SESSION['val'] = 'przykladowa wartosc'; }
Po przeładowaniu strony zmienna 'val' nie istnieje w sesji.
Pytanie co się stało?
1. Czy wykonując request AJAX na serwer, raz wywołana funkcja PHP w ten sposób powinna poprawnie się zakończyć?
2. Czy wykonanie redirecta anulowało AJAX request? Tzn. serwer WWW stwierdził że użytkownik nie jest już zainteresowany odpowiedzią i zakończył żądanie? Ale przecież już wywołana funkcja w PHP powinna się dokończyć mimo wszystko?
3. Czy redirect spowodował zabicie poprzednio używanego procesu PHP i stworzenie nowego?
UWAGA: jeśli zakomentuję redirecta i poczekam na odpowiedź requesta AJAX wartość zapisuje się poprawnie w sesji!

Mógł by mi to ktoś wytłumaczyć?
