danielrealized Skrevet 18. desember 2012 Del Skrevet 18. desember 2012 (endret) Dataen gjentar seg uendelig. Hvordan kan man stoppe denne loop'en? function topEvents() { $.post('index.php', $('ul').serialize(), function(data) { $('ul').prepend(data); }); } if (!!window.EventSource) { var sourcet = new EventSource('data.php'); } else { // Result to xhr polling } sourcet.addEventListener('message', function(e) { var data = JSON.parse(e.data); $.each(data, function(i, article) { $("ul").prepend("<li><h2>"+article.title+"</h2><p>"+article.shorttext+"</p></li>"); }); retry: 1; }, false); sourcet.addEventListener('open', function(e) { }, false); sourcet.addEventListener('error', function(e) { if (e.readyState == EventSource.CLOSED) { // Connection was closed. } }, false); Takk på forhånd:) Endret 18. desember 2012 av danielrealized Lenke til kommentar
danielrealized Skrevet 19. desember 2012 Forfatter Del Skrevet 19. desember 2012 (endret) Mulig dårlig forklart. Jeg bruker noe som heter SSE(streaming av data) http://www.html5rock...tsource/basics/ sourcet.addEventListener('message', function(e) { var data = JSON.parse(e.data); $.each(data, function(i, article) { $("ul").prepend("<li><h2>"+article.title+"</h2><p>"+article.shorttext+"</p></li>"); }); retry: 1; }, false); I denne delen av scriptet, så vil dataene bli skrevet ut og ha en intens oppdatering. I databasen har jeg kun to rader med innhold. Disse to radene repeterer seg selv pågrunn av streamingen. Prøvde å publisere innholdet med $(element).html(data). Da ble det ingen uendelig loop, men det ble kun vist en rad med innhold fra databasen. Noen som har noen tips? Endret 19. desember 2012 av danielrealized Lenke til kommentar
WhiteFire Skrevet 19. desember 2012 Del Skrevet 19. desember 2012 SSE ber om data fra data.php helt til du stopper forbindelsen. Er det meningen at du skal hente litt og litt data, eller vil du bare ha tilgang til data via php i javascript? Hvis sistnevnte er tilfellet, så er nok $.getJSON riktigere for deg. Lenke til kommentar
TSP Skrevet 19. desember 2012 Del Skrevet 19. desember 2012 Jeg er ikke veldig kjent med Javascript, men det virker jo som du selv legger opp til at dataene skal bli repetert nedover ved å bruke prepend. Slik det ser ut for meg så vil den legge til nye listepunkter for hver gang den henter data, uavhengig av om den har hentet de fra før eller ei. Dersom du kun vil ha dataene oppdatert er nok det enkleste å bytte ut alt inneholdet innenfor listen hver gang. Her er for eksempel noe kode som jeg bruker. Selv ønsket jeg ikke å styre for mye med Javascript og valgte derfor heller å jukse litt. jQuery.getJSON("http://lenke.no/index.php?do=feed&id={$feed['id']}", function({$feed['feed_key']}) { jQuery('#feed-{$feed['id']}').html({$feed['feed_key']}.content); }); {$feed['id']} og {$feed['feed_key']} er to variabler som her kommer fra PHP, bare skriv om dette til hva du ønsker eventuelt. getJson peker til en json-feed på adressen index.php?do=feed&id=1 for eksempel. Den inneholder ikke dataene hver for seg, men jeg har i stedet jukset ved å la PHP generere HTML-en slik at det eneste behovet var å la javascriptet bytte ut html-en som ble levert gjennom en enkelt verdi med json. Eksempel på hva getJSON finner: {"content":"<span>...<\/span>"} Lenger nede i HTML-en har jeg da: <div id="feed-{$feed['id']}"></div> Jeg er litt usikker på hvordan det blir om du ikke har muligheten til å benytte deg av PHP, men antar du kan gjøre noe slikt som dette: var content = ''; $.each(data), function(i, article) { content += "<li><h2>"+article.title+"</h2><p>"+article.shorttext+"</p></li>\n"; }); $(element).html(content); Men gir ikke noen garantier her. Er ikke erfaren med Javascript og fant det personlig enklere å levere den fullstendige html-en til en egen json-feed med PHP, i stedet for å styre for mye med Javascript. Men det er sikkert langt bedre og penere måter å gjøre det på i alle fall. Lenke til kommentar
danielrealized Skrevet 19. desember 2012 Forfatter Del Skrevet 19. desember 2012 Jeg er litt usikker på hvordan det blir om du ikke har muligheten til å benytte deg av PHP, men antar du kan gjøre noe slikt som dette: var content = ''; $.each(data), function(i, article) { content += "<li><h2>"+article.title+"</h2><p>"+article.shorttext+"</p></li>\n"; }); $(element).html(content); Men gir ikke noen garantier her. Er ikke erfaren med Javascript og fant det personlig enklere å levere den fullstendige html-en til en egen json-feed med PHP, i stedet for å styre for mye med Javascript. Men det er sikkert langt bedre og penere måter å gjøre det på i alle fall. Det fungerte bra! Tusen takk! Jeg har heller ikke så mye erfaring med Javascript. Men er det riktig å bygge artikkelelementer i javascript, slik jeg har gjort det når det gjelder json? Lenke til kommentar
WhiteFire Skrevet 19. desember 2012 Del Skrevet 19. desember 2012 Hvis du skal overføre store mengder data, så lønner det seg å bygge html'en i javascript. Hvis ikke er det litt hipp som happ. 1 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå