Dynamisk indhold med Ajax og PHP

Tags:    ajax php jquery
Skrevet af Bruger #8773 @ 28.05.2012


Hente indhold


Det er her al magien sker - vi skal nemlig til at få vist noget indhold på siden. I vores javascript-fil skal der foregå lidt forskellige ting:


  • Tjek om brugeren bevæger musen

  • Sæt et timeout når brugeren ikke længere bevæger musen

  • Inde i dette timeout - kør da et ajax-kald én gang i sekundet

  • I dette ajax-kald, send seneste timestamp som POST-parameter

  • Modtag data fra AJAX-kaldet, og udskriv dette samt gem seneste timestamp



Hvis vi starter fra en ende af, skal vi først have "grund" jQuery koden sat op i tagwall.js:

Fold kodeboks ind/udJScript kode 


Jeg anvender her jQuery(document).ready() i stedet for at bruge $(document).ready() - dette er blot en vanesag. Jeg gør det altid for at sikre mig, at der ikke opstår konflikter med anden javascript når jeg arbejder på større projekter.

Den samlede javascript-kode vi skal bruge (kommenteret i koden) kommer her:

Fold kodeboks ind/udJScript kode 


Nu har vi javascript-koden til at hente indlæg på siden. Nu mangler vi blot javascript-koden samt php koden til at gemme nye indlæg.

OBS!!!! Lige nu hentes ALLE gamle indlæg fra databasen - der skal måske laves noget limit af en art, så man ikke pludseligt står med flere tusinde indlæg :-)

Gemme nye indlæg


Til at gemme indlæg skal vi først sende datene fra vores form - via et AJAX kald - til en ny fil, hvorfra indholdet gemmes til databasen. Inden datene sendes til PHP, tjekker vi også, at der ikke allerede er indtastet noget.

Når indlægget er gemt, skal indholdet i "besked"-feltet ryddes så vi er klar til at skrive noget nyt igen.

Først vores javascript: (er kommenteret i koden)

Fold kodeboks ind/udJScript kode 


Til slut mangler vi blot php-filen til at gemme indlægget. Denne kalder vi save.php. Her skal vi - igen - huske at inkludere config.php og db.class.php samt lave et database-objekt:

Fold kodeboks ind/udPHP kode 


Derefter skal vi blot gemme det modtagede data i databasen:

Fold kodeboks ind/udPHP kode 


Vi har nu en komplet tag-wall som fungerer alene ved hjælp af AJAX forespørgsler mellem klienten og serveren. Egentligt fungerer dette også lidt som en chat hvis man sidder flere personer og kigger med samtidig. Det er så i særdeleshed her man skal være opmærksom på, at man ikke blot henter ALT indhold fra databasen, hvis der ligger mange tusinde chat-beskeder, for det kunne godt tage noget tid.

Opsamling


For lige at samle lidt op på hele artiklen, så har vi nu kigget nærmere på brugen af AJAX sammen med php og ud fra dette forsøgt at lave en lille tagwall, som også virker lidt som en chat.

Der er uendeligt mange muligheder for anvendelsen af AJAX til alverdens ting, husk dog at bruge det med omtanke, da det ikke altid er den bedste løsning.

Der er nogle begrænsninger til brugen af AJAX - når der arbejdes på tværs af domæner, skal serveren godkende en forespørgsel foretaget via AJAX, for at returnere data. Ellers får man en meddelelse om, at oprindelsen ikke er tilladt af Access-Control-Allow-Origin.

Jeg håber artiklen kan hjælp folk til selv at komme i gang med brugen af AJAX sammen med jQuery.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (4)

User
Bruger #15342 @ 18.07.13 18:02
Du mangler at afslutte index.html
User
Bruger #8773 @ 01.09.13 21:41
Michael:

Nu er artiklen ikke en begynder-artikel, så går ud fra at folk godt ved hvordan et simpelt html-dokument skal startes og sluttes :-)
User
Bruger #17818 @ 16.01.14 10:58
Super god artikel på trods af alderen på den :)

Et forslag kunne være at lave en opfølgning, hvor du går mere i dybden med nogle af de emner, hvor du skraber overfladen.
User
Bruger #22066 @ 15.05.18 19:14
hvor du skraber overfladen. skrotpræmie
Du skal være logget ind for at skrive en kommentar.
t