<ole>
Det ville da være vanvittigt at hente alle de samme data hvert femte sekund. Én gang må være nok - og derefter henter man kun de beskeder, brugeren endnu ikke har set. Derudover HTML-formaterer man ikke data på serveren. Det performer også elendigt.
Kik i jQuery's dokumentation efter
getJSON. Med den hentes data som JSON og returneres som et JS-object. Data ligger nu i dette objekt, og du kan så indsætte HTML-elementer med data fra objektet i dokumentet.
På serveren opretter du et objekt - f.eks. med:
$json = new stdClass();
På
$json kan du så oprette forskellige properties, hvis værdier udgøres af de data, du ønsker at returnere. Hvis du f.eks. ønsker at returnere nogle fundne MySQL-rækker, kan du skrive noget i stil med:
$json->rows = array();
- og når du henter rækkerne, henter du dem som objekter og sætter dem ind i array'et:
while ($row = mysql_fetch_object($res)) {
$json->rows = $row;
}
Til allersidst sætter du de andre properties, du måtte have brug for, sætter headers og udskriver du JSON-strengen:
$json->stamp = time();
$str_json = json_encode($json);
header('Content-Type: application/json; charset=utf-8');
header('Content-Length: ' . strlen($str_json));
echo $str_json;
Når du næste gang kalder PHP-dokumentet medsender du det timestamp, du returnerede fra serveren. Det ligger i getJSON's JS-objekt som
data.stamp. Men som sagt: Tjek dokumentationen *o)
Når PHP-dokumentet kaldes, henter du kun de beskeder, som er oprettet efter det medsendte stamp (alle beskeder skal være indsat sammen med et timestamp for oprettelsen). Hvis der ikke er medsendt noget stamp, må det være første gang, der hentes - og så skal hele dynen hentes og returneres.
/mvh
</bole>