Do something after function is complete

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danny von Gaal

Danny von Gaal

12/11/2017 10:36:05
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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);
                    }
                });
            }
        });
    }
});
Gewijzigd op 12/11/2017 10:37:05 door Danny von Gaal
 
PHP hulp

PHP hulp

24/11/2024 11:02:48
 
- Ariën  -
Beheerder

- Ariën -

12/11/2017 11:27:43
Quote Anchor link
Hm... een Engelse titel ;-)?
 
Danny von Gaal

Danny von Gaal

12/11/2017 12:00:46
Quote Anchor link
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.
Gewijzigd op 12/11/2017 12:28:40 door Danny von Gaal
 
Rob Doemaarwat

Rob Doemaarwat

12/11/2017 13:38:55
Quote Anchor link
Gewoon even een vlaggetje hijsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
//bovenaan in javascript
var busy = false;
//in scroll event handler
if(!busy && scrollTopEnz){
  busy = true;
  $.ajax({
    success: function(){
      //doe ding
      busy = false;
    }
  })
}
 
Thomas van den Heuvel

Thomas van den Heuvel

12/11/2017 16:54:38
Quote Anchor link
Precies, houd bij of je bezig bent.
 
Danny von Gaal

Danny von Gaal

15/11/2017 10:45:02
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($(window).scrollTop() + $(window).height() == $(document).height()) {
ipv tegelijkertijd.

Misschien dat ik dat fout deed. thnx
Gewijzigd op 15/11/2017 10:45:37 door Danny von Gaal
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.