Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ajax, jQuery. Sisällön lataaminen

Sivun loppuun

p99o [30.05.2014 14:34:29]

#

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?

Lebe80 [30.05.2014 14:40:41]

#

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.

p99o [30.05.2014 14:54:41]

#

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...
}

Lebe80 [30.05.2014 15:02:49]

#

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.

p99o [30.05.2014 15:09:05]

#

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 *]);
}

Lebe80 [30.05.2014 15:23:43]

#

Siis eikö se voi olla suoraan html-muodossa, ilman mitään jsonia?

Sen kun vain ruuttaa ajaxilla haettavan sisällön suoraan haluamaasi diviin.

p99o [30.05.2014 15:34:12]

#

//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ö?

Lebe80 [30.05.2014 16:29:30]

#

Noin, jos se toimii.

qeijo [31.05.2014 14:58:20]

#

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.

Lebe80 [01.06.2014 00:03:34]

#

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.

p99o [01.06.2014 11:51:03]

#

Kyllä tuo JSON:in käyttäminen tuntuisi järkevimmmältä


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta