2011-06-27 15 views
5

Mam funkcję jquery, robiąc $ .post wartości do funkcji php. Ta funkcja php umieszcza tę wartość w zmiennej $ _SESSION i wyświetla odpowiednią treść.

Chciałbym, aby wykonanie nie trwało, dopóki post nie zostanie ukończony, ponieważ po $ .post zawartość jest wyświetlana, a nowa wartość $ _SESSION nie zaczyna obowiązywać do następnego odświeżenia.

Jak mogę to zrobić?

Dzięki!

+1

Czy chcesz, aby javascript lub php wstrzymywały się podczas wysyłania żądania? – matzahboy

+0

Nie można po prostu ponownie załadować strony za pomocą window.location? – Alfred

Odpowiedz

0

Brzmi to tak, jakbyś tworzył bardziej skomplikowaną wersję kodu, niż jest to konieczne do osiągnięcia tego, co chcesz osiągnąć.

jeśli klient (javascript) ma dane niezbędne do umożliwienia serwerowi (PHP) dokończenia renderowania strony podczas ładowania strony, to klient (javascript) musiał pobrać te dane z serwera (PHP) wyobrażać sobie. więc jeśli serwer (PHP) miał dane potrzebne przed rozpoczęciem renderowania strony, powinien sam ustawić zmienną sesji przed renderowaniem.

Ten scenariusz nie wydaje się mieć wiele sensu. jakie są dane, które strona wysyła na serwer przy użyciu ajaxa podczas ładowania? czy w trakcie ładowania strony ładujesz się w dowolny sposób, który musisz odesłać do serwera, aby ukończyć renderowanie strony? czy widzimy jakiś kod?

1

Po to są wywołania zwrotne. Przekazać funkcję do jednego z parametrów $.post() i będzie wykonywana tylko wtedy, gdy żądanie jest udany:

$.post("test.php", function(data) { 
    alert("Data Loaded: " + data); 
}); 

document.write('This won`t wait for ajax'); 

ten kod wykona alert() część dopiero po żądanie ajax kończy ładowanie, ale document.write() będzie wykonać od razu, bez czekania na odpowiedź.