Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Taxa RAR pt motor 2.0 diesel Euro...

Radio Aftermarket Golf 5

Renault Kadjar serie motor neconf...

Anulare Planului Urbanistic Zonal...
 Flicker expunere drona noua

Corectare barem Tudor Vianu

Dji mini 4 pro si limita de inalt...

Masinile cu volan pe dreapta - de...
 Harta - apa minerala naturala

Recomandari forum Softpedia pentr...

Este TeamViewer o aplicatie cu cr...

RCS-RDS devine Digi Romania
 Problema monitor

Ce software secure folositi pentr...

Tub flexibil retur combustibil tr...

La multi ani @iogamac!
 

jQuery do something after given time

- - - - -
  • Please log in to reply
7 replies to this topic

#1
nevergone

nevergone

    Junior Member

  • Grup: Members
  • Posts: 154
  • Înscris: 27.03.2009
Salut,
Am si eu nevoie de putin ajutor in jQuery.
Vreau ca intr-un div sa apara un mesaj , iar dupa 5 secunde, sa afiseze rezultatul din fisierul account.inc.php si sa ramana asa.
Codul meu afiseaza doar continutul lui account.inc.php
if (mysql_query($sql)) {
echo '
<script type="text/Javascript">
 $(\'#loginDiv\').html(\'Your account was updated succesfully\').delay(5000).load(\'includes/account.inc.php\');
</script>';
} else {die(mysql_error());}

.delay( duration, [ queueName ] )

duration An integer indicating the number of milliseconds to delay execution of the next item in the queue.

Am pus delay de 5000ms(5s) intre afisarea mesajului in div si incarcarea in div a continutului fisierului account.inc.php ... dar nu merge :| .

PoC - se vede ca afiseaza msg-ul dar dispare in milisecunda urmatoare,deci nu functioneaza delay(5000)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script>
</head>
<body>
<div id="loginDiv">
<script type="text/Javascript">
	$('#loginDiv').html('Your account was updated succesfully').delay(5000).load('includes/account.inc.php');
</script>
</div>
</body>
</html>

Edited by nevergone, 22 March 2010 - 14:57.


#2
senoctar

senoctar

    Member

  • Grup: Members
  • Posts: 733
  • Înscris: 01.07.2006
Script-ul scris in tag-urile <script> se executa instant, inainte sa se incarce tot HTML-ul (si loginDiv e posibil sa nu existe), cel mai bine este sa pui tot codul ce manipuleaza HTML la inceput in $(document).ready(...)
$(document).ready(function() {
  $(\'#loginDiv\').html(\'Your account was updated succesfully\').delay(5000).load(\'includes/account.inc.php\');
});
Daca intradevar textul apare si apoi dispare, urmareste cu firebug sau altceva request-urile ajax sa vezi daca nu se apeleaza ajax-ul sau se apeleaza insa da eroare ori raspunsul este gol.

Edited by senoctar, 22 March 2010 - 15:43.


#3
nevergone

nevergone

    Junior Member

  • Grup: Members
  • Posts: 154
  • Înscris: 27.03.2009

View Postsenoctar, on 22nd March 2010, 15:41, said:

Script-ul scris in tag-urile <script> se executa instant, inainte sa se incarce tot HTML-ul (si loginDiv e posibil sa nu existe), cel mai bine este sa pui tot codul ce manipuleaza HTML la inceput in $(document).ready(...)
$(document).ready(function() {
  $(\'#loginDiv\').html(\'Your account was updated succesfully\').delay(5000).load(\'includes/account.inc.php\');
});
Daca intradevar textul apare si apoi dispare, urmareste cu firebug sau altceva request-urile ajax sa vezi daca nu se apeleaza ajax-ul sau se apeleaza insa da eroare ori raspunsul este gol.
Eu trimit niste date prin ajax la un fisier , si acesta le introduce in baza de date,iar daca reuseste va afisa un text prin care utilizatorul e informat ca datele au fost adaugate cu succes,mesaj afisat timp de 5 secunde apoi va afisa datele dintr-un fisier ,de asta am nevoie sa se execute instant,iar apoi loginDiv va contine alte date , si ce a fost in urma cu 5 sec in tag-ul <script> va disparea

Am reusit in cele din urma , dar tot nu am aflat ce doream si de ce nu mergea ceea ce era mai sus.

<script type="text/Javascript">
	$('#loginDiv').html('<p>&nbsp;</p><p class="updated">Account updated succesfully</p><p>Please wait 5 seconds to return to your account details window</p>').fadeOut(5000, function() {
				$('#loginDiv').load("includes/account.inc.php").fadeIn('slow');
			});
</script>

Edited by nevergone, 22 March 2010 - 17:12.


#4
senoctar

senoctar

    Member

  • Grup: Members
  • Posts: 733
  • Înscris: 01.07.2006
Ce versiune de jQuery folosesti ?
Ca sa fii sigur scrie alert($().jquery);

LE: Am mai citit despre delay, se pare ca functioneaza doar pentru efecte, cand apelezi o functie in sir pe un obiect, in functie de diversi parametri ea va fi pusa sau nu intr-un queue. Majoritatea functiilor de animatie vor fi puse in queue-ul numit "fx". Functia delay daca ii dai doar numarul de milisecunde se va atasa si ea la acest queue si nu va avea efect asupra altor functii ce nu tin de efecte, precum load.

Ca sa fortezi un eveniment pe un queue poti face asa :
$(\'#loginDiv\').html(\'Your account was updated succesfully\').delay(5000).queue(\'fx\', function(next){ load(\'includes/account.inc.php\'); next();})
Desi ar fi mai bine sa iti faci propriul queue ca sa nu folosesti 'fx'

Edited by senoctar, 22 March 2010 - 17:35.


#5
nevergone

nevergone

    Junior Member

  • Grup: Members
  • Posts: 154
  • Înscris: 27.03.2009

View Postsenoctar, on 22nd March 2010, 17:19, said:

Ce versiune de jQuery folosesti ?
Ca sa fii sigur scrie alert($().jquery);

LE: Am mai citit despre delay, se pare ca functioneaza doar pentru efecte, cand apelezi o functie in sir pe un obiect, in functie de diversi parametri ea va fi pusa sau nu intr-un queue. Majoritatea functiilor de animatie vor fi puse in queue-ul numit "fx". Functia delay daca ii dai doar numarul de milisecunde se va atasa si ea la acest queue si nu va avea efect asupra altor functii ce nu tin de efecte, precum load.

Ca sa fortezi un eveniment pe un queue poti face asa :
$(\'#loginDiv\').html(\'Your account was updated succesfully\').delay(5000).queue(\'fx\', function(next){ load(\'includes/account.inc.php\'); next();})
Desi ar fi mai bine sa iti faci propriul queue ca sa nu folosesti 'fx'
Folosesc 1.4.2 ,
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script>
Spune-mi si mie te rog unde ai citit chestiile de mai sus si merci pt ajutor.

#6
senoctar

senoctar

    Member

  • Grup: Members
  • Posts: 733
  • Înscris: 01.07.2006
In documentatia la jQuery.
Pagina de inceput este documentatia funciei delay, daca te uiti la comentarii, cel mai de jos se refera la faptul ca hide() nu functioneaza cu delay() si raspunsul este faptul ca hide() fara parametru nu se pune in coada 'fx' si nu este afectat de delay. In acelasi caz este si functia load() si css() si toate ce nu se refera la efecte.

Despre queue gasesti mai multe informatii si exemple aici.

Ca sa verific am folosit jsbin, ai aici exemplul echivalent codului tau initial care nu functioneaza (se shimba textul in "Phase two" imediat ce se incarca pagina). Si aici unul care functioneaza dupa ce fortez actiunea pe coada 'fx'.

LE: Ca o nota , la solutia din postul meu precedent am uitat sa pun $(this) inainte de load().

Edited by senoctar, 22 March 2010 - 19:50.


#7
cezarica

cezarica

    Member

  • Grup: Members
  • Posts: 803
  • Înscris: 15.02.2004
$('#loginDiv').html('Your account was updated succesfully');
setTimeout(function(){
$('#loginDiv').load('includes/account.inc.php');
},5000);
Nu e bun cu setTimeout?

#8
senoctar

senoctar

    Member

  • Grup: Members
  • Posts: 733
  • Înscris: 01.07.2006

View Postcezarica, on 23rd March 2010, 09:01, said:

Nu e bun cu setTimeout?
in cazul sau ar fi ok, orice astfel de functie este pana la urma implementata cu settimeout, in documentatie chiar scrie :

Quote

jQuery.delay() is best for delaying between queued jQuery effects and such, and is not a replacement for Javascript's native setTimeout  function, which may be more appropriate for certain use cases.
Functia delay este utila cand vrei sa faci ceva de genul $(ceva).slideUp(100).delay(200).hide(20).delay(500).show(100), ceea ce ar fi destul de greu cu setTimeout.

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate