Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX]Funkcja JS nie działa gdy strona jest wywoływana przez AJAX
Forum PHP.pl > Forum > Przedszkole
iki
Dzień dobry.

Głowię się dobę z tym problemem, w końcu zdecydowałem się poprosić Was o pomoc.
Zacznę od tego dlaczego używam funkcji jaką posiadam. Otóż na stronie daję możliwość otworzenia ,,rodziału" (tak to nazwę) i za pomocą funkcji AJAX wywołuję pierwszą ,,stronę książki" (wyobraźnia działa tongue.gif). Pozostając w tym rozdziale mogę przewijać strony książki, gdy klikam odpowiedni odnośnik za pomocą funcji JS zamyka się pierwsza strona, a otwiera druga (w tym czasie ładuje się dokument).
Gdy robiłem to na serwerze lokalnym wszystko robiło się płynnie, jednak gdy wrzuciłem to na hosting pojawił się problem. Oto kod:
  1. $(document).ready(function(){
  2. $("#pagenext").click(function(){
  3. $.ajax({url: "link do drugiej strony", success: function(result){
  4. $("#tresc").html(result);
  5. }});
  6. });
  7. });
  8. $(document).ready(function(){
  9. $("#pagenext").click(function(){
  10. $("#tresc").fadeOut(0);
  11. $("#tresc").fadeIn(500);
  12. });
  13. });
  14.  
  15. <div id="tresc">
  16. Treść pierwszej strony
  17. <img src="img" id="pagenext">
  18. </div>


Jak widzicie po prostu #tresc szybko znika i sie pojawia a w tym czasie ładuje się nowy dokument. Jednak wygląda to tak, że pierwsza strona znika i się pojawia a druga pojawia się w #tresc dopiero gdy się załaduje i daje brzydki efekt migania, który dezorientuje czytelnika i bardzo irytuje.

No i wiadomo jak można rozwiązać ten problem, umieszczając treść drugiej strony w innym divie np #tresc2 ALE biggrin.gif
Mam już 300 podstron haha.gif i jakbym miał tak zmieniać w każdej podstronie to o jeju. No i szukam najprostszego sposobu, żeby usunąć przeskakiwanie ale utrzymać efekt ,,wpadania" na ekran tekstu.

No i wymyśliłem tak, że usunę tę funkcję fadeIn z podstron, a zrobię na podstronie:
  1. function myFunction() {
  2. $(".tresckursu").fadeIn(500);
  3. }
  4.  
  5. <body onload="myFunction()">


No i działa! Ale nie do końca... Gdy wejdę na podstronę www.x.pl/1/2/3/1.php cały tekst wpada, funkcja fadeIn działa. Ale już, gdy wywołuję stronę funkcją AJAX (klikam #pagenext) to tekst się nie pojawia. Wiadomo, mam ustawione display: none, ale właśnie onload="myFunction()" powinno wczytać tekst. I tak się dzieje, ale gdy wchodzę na stronę ręcznie.

Czy ktoś wie dlaczego tak się dzieje? Czy są jakieś reguły, o których nie wiem? Czy może wiecie jak rozwiązać ten problem tak by zaoszczędzić sobie pracy na tych 300 podstronach albo ją zminimalizować? W ostateczności będę musiał zrezygnować z efektu przejścia, ale może wiecie jak pomóc? smile.gif
trueblue
Jedna wspólna funkcja pod zdarzenie.
1. fadeOut
2. Ajax
3. Wstawienie treści na success
4. fadeIn
iki
haha.gif Dzięki wielkie, trzeba było uczyć się JS.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.