Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][AJAX]Funkcja JS nie działa gdy strona jest wywoływana przez AJAX
iki
post 27.07.2017, 16:31:14
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 16.01.2017

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
trueblue
post 27.07.2017, 16:39:30
Post #2





Grupa: Zarejestrowani
Postów: 6 800
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Jedna wspólna funkcja pod zdarzenie.
1. fadeOut
2. Ajax
3. Wstawienie treści na success
4. fadeIn


--------------------
Go to the top of the page
+Quote Post
iki
post 27.07.2017, 21:35:29
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 16.01.2017

Ostrzeżenie: (0%)
-----


haha.gif Dzięki wielkie, trzeba było uczyć się JS.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 17:06