Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][AJAX] Efekt pojawiającego się tekstu
-lukasamd-
post 23.06.2009, 15:53:47
Post #1





Goście







Witam,
mam chyba dosyć śmieszny problem - w efekcie kliknięcia na link, poprzez użycie ajaxa wykonywane jest zapytanie do bazy zaś zamiast linku pojawia się napis "Operacja została wykonana".

Taka zamiana po 1-2 sekundach wygląda jednak niezbyt ciekawie, najlepiej gdyby napis zmienił się z np. efektem przenikania.
Jak to osiągnąć w HTML?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
kielich
post 23.06.2009, 15:56:30
Post #2





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


zapodaj kod: smile.gif


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
-lukasamd-
post 23.06.2009, 16:04:10
Post #3





Goście







Strona z linkiem (fragment):
  1. <?php
  2. echo '<div id="info"><a href="'.$_SERVER['REQUEST_URI'].'#" onclick="sendRequest('.$userdata['user_id'].' , '.$data['gra_id'].')">Dodaj grę do ulubionych</a></div>';
  3. ?>




JS:
Kod
var xHRObject = false;
if (window.XMLHttpRequest)
{
  xHRObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
  xHRObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function sendRequest(user , gra)
{
  xHRObject.open("GET", "kod.php?user_id=" + user + "&gra_id=" + gra, true);
  xHRObject.onreadystatechange = getData;
  xHRObject.send(null);
}

function getData()
{
  if (xHRObject.readyState == 4 && xHRObject.status == 200)
  {
    var serverText = xHRObject.responseText;
    if(serverText.indexOf('|' != -1))
    {
      element = serverText.split('|');
      document.getElementById(element[0]).innerHTML = element[1];
    }
  }
}



Strona obrabiająca:

  1. <?php
  2. $user_id = $_REQUEST['user_id'];
  3. $gra_id = $_REQUEST['gra_id'];
  4. $czas = time();
  5.  
  6. mysql_query("INSERT INTO ".DB_ULUBIONE." VALUES ('".$user_id."', '".$gra_id."', '".$czas."')");
  7. echo 'info|Operacja została wykonana!';
  8. ?>
Go to the top of the page
+Quote Post
erix
post 23.06.2009, 16:14:06
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Taka zamiana po 1-2 sekundach wygląda jednak niezbyt ciekawie, najlepiej gdyby napis zmienił się z np. efektem przenikania.
Jak to osiągnąć w HTML?

Ściągnij sobie jakiegoś frameworka, bo każda przeglądarka robi inaczej (właściwie, to tylko IE) i się zajedziesz wynajdując koło na nowo.

A np. w jQuery:
Kod
$('#id_warstwy').fadeOut();

i tyle [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
slightyboy
post 23.06.2009, 16:15:55
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 12
Dołączył: 12.07.2007

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


Skorzystaj z jakiegoś frameworka JS/AJAX, np. jQuery, mooTools, czy mintAjax (polska biblioteka - więc najpierw zajrzyj tam). Co do samej implementacji sposobu: możesz umieścić warstwę na warstwie (potem fadeować tą górną) albo użyć tylko jednej warstwy i najpierw ją ukryć (fade'm), podmienić zawartość i przy użyciu setTimeout() ponownie pokazać (fade'm). smile.gif
Go to the top of the page
+Quote Post
-lukasamd-
post 23.06.2009, 19:42:43
Post #6





Goście







No dobra, ale jak tego konkretnie używać? biggrin.gif Jak załączyć to wiem, gorzej z innymi rzeczami.
Np chciałbym aby po kliknięciu na napis zniknął. Dałem więc coś takiego:

  1. <p onclick='fadeOut("slow")'>To ma zniknąć</p>


No i niestety wg. moich przewidywań nie działa (na 100% źle to dałem, no ale naprawdę nie wiem jak ma być).
jQuery załączone.
Go to the top of the page
+Quote Post
erix
post 23.06.2009, 20:03:18
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Bo nie ma prawa działać. [;

jak już, to:
Kod
<p onclick='$(costutrzebawpisac).fadeOut("slow")'>To ma zniknąć</p>

A co trzeba wpisać? Zobacz w dokumentacji, co to jest magiczna funkcja "pieniężna". [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Maxik
post 23.06.2009, 20:25:49
Post #8





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


@erix: A zwykłe this nie wystarcza?


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
erix
post 23.06.2009, 20:45:59
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie mogłeś cicho siedzieć? tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Maxik
post 23.06.2009, 22:48:19
Post #10





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


W sumie mogłem, ale po co? winksmiley.jpg

Reasumując:
  1. <p onclick='this.fadeOut("slow")'>To ma zniknąć</p>


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
erix
post 23.06.2009, 22:49:22
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To też jest źle. tongue.gif Gdybyś działał na Prototype i gdyby miał taką funkcję, to by przeszło, ale jQ działa na nieco innej zasadzie.

Ale nie będę mówił, co - podałem wskazówki wcześniej. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
-lukasamd-
post 24.06.2009, 13:06:27
Post #12





Goście







Już jarzę biggrin.gif Jak dam $(this) to odwoła się do tego elementu z którego jest wykonywane, jak chcę cos innego to po znaczniku i klasie np.

  1. <p onclick='$("p.znikanie").fadeOut("slow")'>ZNIKNIE CZY NIE?</p>
  2. <p class="znikanie">To ma zniknąc</p>


Czyli jak rozumiem, mogę ten i inne efekty z jQuery wrzucać sobie do HTML'a bez znajomości samego mechanizmu (no podawane argumenty to wiadomo)?
Go to the top of the page
+Quote Post
erix
post 24.06.2009, 13:48:53
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No jednak załapałeś. [;

Możesz też zamiast selektora podawać this, xpath, inne rzeczy, wszyskto jest opisane i właściwie, to chyba nie ma takiej zmiennej, której nie można "spieniężyć". [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 27.06.2025 - 10:49