Gå til innhold

Anbefalte innlegg

Hei! Jeg lager et kommentar system med PHP og jQuery.

Har kodet det ferdig og det fungerer kjempe bra, men eneste problemet er at

folk kan ikke se kommentaren som blir lagt inn live. De må ut og inn på kommentar system for å oppdatere alt. Jeg har brukt Ajax for å få flyt på systemet.

 

Her er litt av koden i jQuery som jeg bruker når noen skal legge inn kommentar:

var entry = $(.textarea).val();
$.ajax({
type: "POST",
url: "postcomment.php",
data: {kommentar: entry},
success: function(data) {
$(".field").append(data)
}
});

 

 

Her er koden av jQuery som henter alle kommentarer


$.ajax({
type: "GET",
url: "getcomments.php",
data: "commentsid="+postid
success: function(data) {
$(".field").append(data)
}
});

 

Men hvordan kan de lages slik at alle kommentarer bli oppdatert pr 5 sekund f.eks. uten bruk av load funksjonen i jQuery. Jeg ønsker at den sjekke om de finnes nye kommentarer å legger til de siste uten å måtte oppdatere alle 500 kommentarer.

 

Takk for svar!

Lenke til kommentar
Videoannonse
Annonse

Du kan holde i gang en forbindelse mellom nettleseren og serveren. Serveren kan da si fra når nye kommentarer legges inn. Det finnes nok JavaScript-biblioteker som gjør dette for deg, men noe arbeid må til på serveren også. Kan være vanskelig, avhengig av i hvor stor grad du vil bruke eksisterende løsninger og hvor flink du er!

 

Den andre måten du kan gjøre det på er å bruke en timer som kjører en forespørsel hvert femte sekund og lagrer hva som er lastet inn. Du kan f. eks. holde styr på antall kommentarer som er lastet inn hos klienten med JavaScript og sende en AJAX-forespørsel der du kun ber om de nyeste meldingene. Går ut fra at commentsid er nøkkelen mellom artikkel og kommentarer her?

 

* Klienten starter med 0 kommentarer og sender en AJAX-forespørsel "getcomments.php?commentsid=123&last=0".

* Serveren sender alle kommentarene (la oss si det er 32 kommentarer)

* Klienten venter fem sekunder

* Klienten sender en AJAX-forespørsel "getcomments.php?commentsid=123&last=32"

* Serveren henter kommentarer "SELECT * FROM xyz WHERE commentsid=123 OFFSET 32"

* Klienten får alle de nye kommentarene (la oss si 5) og oppdaterer antall kommentarer lastet inn (32 + 5)

* Osv, osv.

 

Denne løsningen er noe mer ressurskrevende for både klient og server, men burde gå greit for mindre nettsider og er altså svært lett å implementere.

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...