Ik heb een pagina gemaakt met 10 items uit mijn database en wanneer de pagina helemaal beneden aan het document is dan worden er 10 nieuwe items geladen en onderaan de pagina bijgevoegd. Dit blijft zich net zo vaak herhalen tot er geen items meer zijn.

Dit werkt prima tenzij het een keer even duurt voordat de items uit de database zijn geladen. Het scrollpunt blijft dan onderaan de pagina staan en blijft iedere keer 10 items onderaan bijvoegen en dit zijn soms heel veel items in een keer.

Ik wil dus dat de tweede Ajax post pas gebeurd wanneer LoadNewsPage(); echt items heeft geladen en weergeven want dan is de bodem van mijn pagina veranderd.
Iemand een idee?


function LoadNewsPage() {
	// Load Newspage
	var sessionlang			=	localStorage.getItem('Lang');
	var sessionmeasure		=	localStorage.getItem('Measurement');
	var sessionid			=	localStorage.getItem('Session');
	$.ajax({
		type: "POST",
		url: url + "/includes/page-news.php",
		data: {lang: sessionlang, measure: sessionmeasure, sessionid: sessionid},
		success: function(response){                    
			$("#page-news").html(response); 
		}
	});
}

$(".footer-menu-news").click(function() {
	LoadNewsPage();
	if ($("#page-news").is(":visible")) {
		start	=	0;
		$(window).scroll(function() {
			if($(window).scrollTop() + $(window).height() == $(document).height()) {
				var sessionlang		=	localStorage.getItem('Lang');
				var sessionmeasure	=	localStorage.getItem('Measurement');
				var sessionid		=	localStorage.getItem('Session');
				start 				= 	start + 10;
				var limit			=	10;
				$.ajax({
					type: "POST",
					url: url + "/formhandling/show_news.php",
					data: {lang: sessionlang, measure: sessionmeasure, sessionid: sessionid, start: start, limit: limit},
					success: function(response){        
						$("#page-news .subbody").append(response);
					}
				});
			}
		});
	}
});
Hm... een Engelse titel ;-)?
Niet opgelet. In mijn hoofd is het programmeren altijd Engels. xD
Maar ik vraag me dus af hoe je er in javascript/JQuery vanuit kan gaan dat een ajax request voltooid is voor je iets anders kan doen.
Gewoon even een vlaggetje hijsen:

//bovenaan in javascript
var busy = false;
//in scroll event handler
if(!busy && scrollTopEnz){
  busy = true;
  $.ajax({
    success: function(){
      //doe ding
      busy = false;
    }
  })
}
Thnx, dit lijkt te werken. :)
Ik had ook al eerder wat geprobeerd met een vlaggetje te maken maar kreeg het niet werkend. Ik controleerde toen op het vlaggetje na
if($(window).scrollTop() + $(window).height() == $(document).height()) {
ipv tegelijkertijd.

Misschien dat ik dat fout deed. thnx

Reageren