Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][AJAX] Efekt pojawiającego się tekstu
-lukasamd-
post
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
kielich
post
Post #2





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

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


zapodaj kod: (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-lukasamd-
post
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
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 [;
Go to the top of the page
+Quote Post
slightyboy
post
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). (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #6





Goście







No dobra, ale jak tego konkretnie używać? (IMG:http://forum.php.pl/style_emoticons/default/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
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". [;
Go to the top of the page
+Quote Post
Maxik
post
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?
Go to the top of the page
+Quote Post
erix
post
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ć? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Maxik
post
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? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Reasumując:
  1. <p onclick='this.fadeOut("slow")'>To ma zniknąć</p>
Go to the top of the page
+Quote Post
erix
post
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. (IMG:http://forum.php.pl/style_emoticons/default/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. [;
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #12





Goście







Już jarzę (IMG:http://forum.php.pl/style_emoticons/default/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
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ć". [;
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 2.10.2025 - 22:31