Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Najpierw outfading, poten ajax+innerHTML, potem infading, Jquery
expert
post
Post #1





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

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


Mam taki kod:
  1. function aktualnosci(){
  2. $("#bodys").fadeOut("700");
  3. ajax_obiekt = typeof XMLHttpRequest == "undefined"?new ActiveXObject('Microsoft.XMLHttp'):new XMLHttpRequest();
  4.  
  5. if(ajax_obiekt)
  6. {
  7. var doda = '&a='+new Date().getTime();
  8. ajax_obiekt.open("POST", '../ajax.php?mode=aktualnosci'+doda);
  9.  
  10. ajax_obiekt.onreadystatechange = function()
  11. {
  12. if (ajax_obiekt.readyState == 1) {
  13. document.getElementById('loadbodys').style.display="";
  14. }
  15. if (ajax_obiekt.readyState == 4) {
  16. if (ajax_obiekt.status == 200) {
  17. document.getElementById('loadbodys').style.display="none";
  18. document.getElementById('bodys').innerHTML=ajax_obiekt.responseText;
  19. $("#bodys").fadeIn("700");
  20. }
  21. }
  22. }
  23.  
  24. ajax_obiekt.send(null); }
  25. }


Chodzi o to, że chce, żeby był najpierw outfading, potem ajax z pobraniem treści strony i podmiana w id="bodys", i potem infading.

Jednak niby wszystko dobrze działa, ale okazuje się, że podczas znikania jest zamieniana teść strony. Jak to rozwiązać?
Go to the top of the page
+Quote Post
singles
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 26
Dołączył: 2.07.2007

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


Jeśli już używasz jQuery, to dlaczego nie użyć wbudowanych w niego metod do obsługi AJAXa? Będzie prościej.

Zakładam, że obiekt którego treść podmieniasz ma id 'bodys', to może iść mniej więcej tak:

Kod
$('bodys').fadeOut(700, function() {
    var doda = '&a='+new Date().getTime();
    $(this).load('/ajax.php?mode=aktualnosci' + doda, function() {
        $(this).fadeIn(700);
    }    
}


Z tego co widzę w Twoim kodzie, to wysyłasz żądanie POSTem. U mnie napisałem za pomocą load(), a to korzysta z GETa. Twój kod nie wskazuje na to, żeby POST był potrzebny, ale w razie potrzeby możesz pokombinować z $.post().

Ten post edytował singles 7.06.2009, 21:38:54


--------------------
Works for me => u mnie działa - blog o (o)programowaniu i nie tylko
meet.php - darmowe meetupy związane z PHP
Go to the top of the page
+Quote Post
expert
post
Post #3





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

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


Coś tu jest nie tak, jak mam taki link:
  1. <a href="/pl/logowanie" onclick="login(); return false;">Logowanie</a>


i taki kod:
  1. function aktualnosci(){
  2. document.getElementById('loadbodys').style.display="";
  3. $('bodys').fadeOut(700, function() {
  4. var doda = '&a='+new Date().getTime();
  5. $(this).load('../ajax.php?mode=aktualnosci' + doda, function() {
  6. document.getElementById('loadbodys').style.display="none";
  7. $(this).fadeIn(700);
  8. }
  9. }
  10. }


to przechodzi mi do strony html /pl/logowanie a nie wykonuje się js, jak to było w przypadku 1 kodu, który podałem. $('#bodys') też nie łapie.
Go to the top of the page
+Quote Post
singles
post
Post #4





Grupa: Zarejestrowani
Postów: 121
Pomógł: 26
Dołączył: 2.07.2007

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


Właśnie zauważyłem, że w moim kodzie jest błąd - powinno być $('#bodys') a nie $('bodys'), przepraszam.

Odnośnie tego co podałeś, nie widzę w jaki sposób kliknięcie na link ma odpalić funkcję aktualnosci(). Mój kod powinieneś traktować raczej jako szkielet, a nie gotowe rozwiązanie. W razie dalszych problemów napisz może, co ma się stać po kliknięciu na link, jakie divy mają zostać podmienione i jaką zawartością.


--------------------
Works for me => u mnie działa - blog o (o)programowaniu i nie tylko
meet.php - darmowe meetupy związane z PHP
Go to the top of the page
+Quote Post
expert
post
Post #5





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

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


twój kod działa, tylko trza dać nie bodys a #bodys i zmiast
}
}

to:
})
})
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 Aktualny czas: 21.08.2025 - 00:04