mboost-dp1

Tidsstyret ajax


Gå til bund
Gravatar #1 - The-Lone-Gunman
13. jun. 2007 15:01
Jeg har lidt af et problem med JavaScript...

Jeg har noget indhold i en database, som jeg så vil vise i noget tid, hvorefter jeg med ajax loader noget nyt content i stedet for, og viser det. Det er nemt nok at lave.

Problemet er, at noget indhold skal vises i længere tid end noget andet. I min database har jeg gemt det antal sekunder indholdet skal vises i, så det kan jeg loade sammen med indholdet, men hvordan får jeg javascript til at læse denne information, også hente ny data herefter.

Giver det mening?

Lige nu har jeg bare lavet et hack, hvor jeg bruger en meta http-equiv="refresh", men jeg vil helst kunne reloade indholdet, uden at skulle reloade siden.
Gravatar #2 - Mort
13. jun. 2007 15:13
Hvad med:

<script language=jscript>

function Timer()
{
// DoStuff
}

function Main()
{
setInterval("Timer()", 50);
}
</script>
<body onload="Main()">
Gravatar #3 - plazm
13. jun. 2007 15:17
hvordan viser du indholdet? og bruger du xml eller får du det bare som rå tekst?
Gravatar #4 - The-Lone-Gunman
13. jun. 2007 15:26
Well, indholdet er nogle Flash-videoer, hvis ID jeg har gemt i databasen sammen med længden.

Lige nu henter jeg ID'en og længden fra databasen, ID'en omsætter jeg med php til rent faktisk at indsætte den rigtige film og længden bliver smidt i en meta refresh.

Men det kan jeg jo bare ændre.
Gravatar #5 - plazm
13. jun. 2007 15:28
Er det muligt at komme til at se siden, eller er det noget lukket? For umiddelbart ville jeg da bare bruge js til at opdatere det.
Gravatar #6 - The-Lone-Gunman
13. jun. 2007 15:34
Ja,

http://lejemorder.dk/tv/

Min egen YouTube MTV.

Jeg bruger YouTubes API til at hente info om filmene, bl.a. længden, men har gemt det i en lokal database, så jeg kun laver opkald til YouTube når man tilføjer nye videoer.
Gravatar #7 - plazm
13. jun. 2007 16:00
Det er også fornuftigt nok.

Det kan sagtens gøres på en simpel måde.
Hvis du henter næste films id samtidig med at du henter linket til den film du vil se nu kan du gøre noget i stil med

document.getElementById('content').childNodes[3].style.display="none";
document.getElementById('content').childNodes[3].childNodes[0].setAttribute("value","http://www.youtube.com/v/HvuTtrkVtns&autoplay=1");
document.getElementById('content').childNodes[3].childNodes[2].setAttribute("src","http://www.youtube.com/v/HvuTtrkVtns&autoplay=1");
document.getElementById('content').childNodes[3].style.display="block";

en test er følgende, bare sæt den ind i firefox's addreselinie og tryk enter

javascript:document.getElementById('content').childNodes[3].style.display="none";document.getElementById('content').childNodes[3].childNodes[0].setAttribute("value","http://www.youtube.com/v/HvuTtrkVtns&autoplay=1");document.getElementById('content').childNodes[3].childNodes[2].setAttribute("src","http://www.youtube.com/v/HvuTtrkVtns&autoplay=1");document.getElementById('content').childNodes[3].style.display="block";void(0);
Gravatar #8 - plazm
13. jun. 2007 16:01
det eneste du så skal gøre er at sætte en timer som opdaterer dit objekt og beder serveren og linket til næste film og hvor lang tid den varer, så du kan sætte en ny timer
Gravatar #9 - plazm
21. jun. 2007 13:58
Her er en demo af hvordan det kunne gøres
http://plazm.dk/youtubed/
Gravatar #10 - The-Lone-Gunman
21. jun. 2007 19:27
#9

Cool, mange tak.

Jeg ved ikke lige hvor meget jeg vil gøre ud af siden nu, siden YouTube er ved at ændre deres API meget snart. Men det er da helt sikkert noget der kan bruges.
Gravatar #11 - The-Lone-Gunman
25. jun. 2007 22:29
#9

Tænkte på, hvad er det, du gør her

} else {
alert("a");
document.getElementById("pa").value = info.url;
alert("b");
document.getElementById("eb").src = info.url;
alert("c");
}


I IE6 får jeg nemlig bare en alert "a", uden det rigtig virker...
Gravatar #12 - plazm
26. jun. 2007 00:26
#11 Jeg sad den anden dag og forsøgte at finde en metode at få det til at virke i IE :)

Men umiddelbart kan jeg ikk få IE til at gøre det, dog har jeg heller ikke gjort de store forsøg...
Gravatar #13 - plazm
26. jun. 2007 19:35
så, kører vi i både Firefox og IE :)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login