Avatar billede thb Nybegynder
14. oktober 2010 - 13:04 Der er 4 kommentarer

jQuery løsning på load problem

Hej,

ved ikke helt om jeg skulle smide mit spm her eller i php sektionen.

jeg har lavet en funktion på mit website hvor den ud fra nogle felter i en tabel grapper en persons blog indlæg, og smider dem i en tabel, men problemet er lidt at det tager meget lang tid at loade siden, da den tjekker alle de forskellige blogs om der er kommet noget nyt indhold.

Jeg tænke om jeg kunne lave det på en smartere måde med f.eks. jQuery, hvor den load og gemme tingene i baggrunden uden at brugerens tid ikke bliver presset af det.

Altså sådan at siden loader, og boksen med som indeholder alle overskrifterne står og loader for sig selv, og måske lige som på facebook selv står og opdatere sig hvis der kommer noget i mens folk er derinde..

Håber I forstår og kan hjælpe mig lidt på vej :)
Har forsøgt at finde noget om det via google, men det er ikke lykkedes og ved heller ikke helt hvad jeg skal søge efter.

Thomas
Avatar billede webroot Nybegynder
14. oktober 2010 - 14:17 #1
Hvis jeg forstår dig ret, er det du gerne vil have følgende:

En funktion som indsamler data fra div. blogs uden at det forstyrrer bruger oplevelsen ad det jeg vil kalde dit indexet.

Det jeg ville gøre i dit tilfælde ville være at, jeg ville have den server side der crawler div. blogs og sender date tilbage til en database. Så index/liste siden så tjekket op mod databasen med x sek. mellemrum og der sidste kan man jo med lethed gøre via ajax og i den forbindelse jquery's load() funktion.
Avatar billede thb Nybegynder
14. oktober 2010 - 14:31 #2
Jeg har lavet hele mekanikken bag det, men det loader bare for langsomt efter mit hoved, da det loader/tjekker inden siden bliver vist.

Jeg vil gerne have at det skal loade siden, og så når dette er gjort, så skal den vise det der er i forvejen i tabellen, mens der så kommer sådan en "loader gif" og så skal den hente det nyeste...

Håber det var bedre forklaret...

Her er siden : http://www.worldofballpythons.com/blog/ det er kolonnen i højreside som sinker det hele..
Avatar billede Slettet bruger
14. oktober 2010 - 20:18 #3
Du skal vel bare sørge for at bruge.


$(document).ready(function() {
  // Handler for .ready() called.
});

Source:
http://api.jquery.com/ready/

Og dette kan du bruge til at lave din loader. (Går ud fra du bruger AJAX til at hente content med)
http://jquery-howto.blogspot.com/2009/04/display-loading-gif-image-while-loading.html
Avatar billede intenz Novice
15. oktober 2010 - 10:55 #4
Det er bestemt muligt at gøre det med ajax/jquery (via de links Zeska skrev), men jeg ville vælge en anden vej.

Det ser ikke ud til, at det data du har opdateres særlig tit, så at lave din database query _hver_ siden hentes gang er unødvendigt og koster ressourcer på dit webhotel/server.

Hvorfor ikke bare hente dataet en gang hver 30. minut måske, og så gemme det i en fil (caching). Når den sidens tjekker du så i databasen hvornår dataet sidst er genereret, hvis det er mindre end 30 minutter siden laver du bare en
include('mit_data.html');

ellers kører du din query, genererer indholdet, og gemmer det i mit_data.html.
$ditData = "<b>alt HTML her</b>";
$fp = fopen('mit_data.html', 'w');
fwrite($fp, $ditData);
fclose($fp);

Og opdaterer din databasen med et nyt tidsstempel på hvornår det er genereret.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester