Ihan tällainen kysymys, että mikä on paras tapa ladata sisältöä verkkosivulle, oletetaan että olisi vaikka jokin aikajana.
jqueryssä kun on monia tapoja $ajax, $get ,$getJSON, load().
Kutsutaanko tiedostoa joka generoi taulukon datasta...
//looppi joka lisää kaikki jutut taulukkoon: $data[] = array( "title"=>"saf", "message"=>"sadassa" ); echo json_encode($data);
...ja pullautetaan se ulos jqueryssä each-loopissa append(), vai html() -
vai luodaanko koko html tiedostossa, josta se vain syötetään divin sisään kättäen append() yms.
Oletetaan myös että taulukko voi sisältää monenlaista dataa. Jos ajattelemme että esim. Twitterissä ladatut twiitit voivat joko olla seurattujen twiittejä tai retweettejä.
kiitos jos ymmärsitte mitä ajan takaa. Mikä on paras tapa?
Itse olisin laiska ja tunkisin ulos suoraan valmista html-koodia, koska tuskin tulen käyttämään sitä missään muualla kuin tässä kyseissä projektissa.
Entä jos sisällön
tulostaisi näin (tämä suoraa StackOverflowsta +oma muokkaus):
//jos saatu data on vaikka tällaista [ { "type":"tweet", "tweeter":"@min\u00e4" }, { "type":"retweet", "tweeter":"@sin\u00e4", "retweeter":"@joku" } ]
//looppi: if(data[key]['type']=='post') { //Tähän kaikki HTML? $("#newsfeed").append($("<div/>", {class : 'row'}).append($("<span/>", {class:'label', text : data[key]['content']}))); } elseif(data[index]['type']=='other') { //tulosta julkaisutyyppi 2:n tiedot... }
Mä tekisin siis sen html:n suoraan siellä palvelin päässä (ja todennäköisesti samassa paikassa, jossa ei-ajax -sisältökin tulisi).
Jos ja kun sinulla sisältö taas tulee jostain ihan muualta, kuin omalta palvelimelta, niin voinet varmaan rakentaa html:n myös suoraan javascriptillä siitä ajaxilla ladattavasta datasta.
Olisiko sisältö silloin taulukossa valmis html
[ { "content":"<div class='asd'> Sisältö tässä jo valmiiksi!</div>" } jne ]
each(data, function(index,value) { $('#asd').append(data[ * indexit ja valuet tähän näin *]); }
Siis eikö se voi olla suoraan html-muodossa, ilman mitään jsonia?
Sen kun vain ruuttaa ajaxilla haettavan sisällön suoraan haluamaasi diviin.
//tai ajastettu (interval) $("#lataa").click(function(){ $("#jutut").load("generoi.php"); });
?
Lisäys:
Löysin tuollaisen jutun
Annetaan parametrina viimeisin ID ja generoidaan html
while ($item = mysql_fetch_assoc($resource)) { ?> <li id="<?php echo $item['date'] ?>"> <span class="feedtext"><?php echo $item['description'] ?> was added by <b><?php echo $item['name'] ?></b></span> </li> <?php }
Näinkö?
Noin, jos se toimii.
Typerää sitoa tiedot näkymään.
Palauta vain JSON ja parsi tapauskohtaisesti. Saatat tarvita tiedot toisessa casessa ilman hötemölöä. Kannattaa tehdä asiat järkevästi vaikkei aina sillä hetkellä tunnu tarpeelliselta.
qeijo kirjoitti:
Typerää sitoa tiedot näkymään.
Palauta vain JSON ja parsi tapauskohtaisesti. Saatat tarvita tiedot toisessa casessa ilman hötemölöä. Kannattaa tehdä asiat järkevästi vaikkei aina sillä hetkellä tunnu tarpeelliselta.
Jolloin joudut muuttamaan haetun datan json-muotoon, ja myöhemmin jsonista html-muotoon, kun tässä ei selvästikään tehdä mitään omaa apia. Tällöin voisi vaan parsia haetun datan ja muuttaa sen suoraan lopulliseen muotoonsa.
Sitten kun tehdään taas sovellusta, jossa oikeasti tarvitaan useassa muodossa dataa, on se json-välivaihde parempi.
Kyllä tuo JSON:in käyttäminen tuntuisi järkevimmmältä
Aihe on jo aika vanha, joten et voi enää vastata siihen.