Gå til innhold

Stoppe en uendelig loop? - $.each


Anbefalte innlegg

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 av danielrealized
Lenke til kommentar
Videoannonse
Annonse

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 av danielrealized
Lenke til kommentar

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

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

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å
×
×
  • Opprett ny...