2016-04-28 14 views
1

Freunde Ich versuche, Daten auf Scroll mit PHP und Jquery zu laden. Mein Problem ist, dass die Datenbank von der letzten ID geladen wird, aber die zuletzt geladenen IDs sich wiederholen. Ich bin nicht in der Lage, Wetter wegen jquery Konflikt oder meinem Codefehler zu finden. Ich benutze jquery 1.11.1 Version. Bitte beachten Sie das Bild unten für ein besseres Verständnis.Infinite Scroll wiederholen die gleiche ID erneut aus der Datenbank

enter image description here

und meine Jquery Daten von PHP zu bekommen

$(window).scroll(function(){ 
    if ($(window).scrollTop() == $(document).height() - $(window).height()){ 
     loadData(); 
    } 
    }); 

function loadData() 
{ 
    $('div.postloader').html('<img src="http://www.zesteve.com/img/loader.gif">'); 
    $.post("/getData.php?lastID=" + $(".post-list:last").attr("id"),  
    function(data){ 
     if (data != "") { 
     $(".post-list:last").after(data);    
     } 
     $('div.postloader').empty(); 
    }); 

}; 

ist und in getData.php i

$last_id = $_GET['lastID']; 
    $stmt = $dbh->prepare('SELECT * FROM review WHERE id < :lastID AND user_id = :user_id order by id DESC LIMIT 5'); 
    $stmt->execute(array(':lastID' => $last_id,':user_id'=>$user_id));  

Freunde bin mit, wenn Sie hier nichts kommentieren bitte verstehen. bitte hilf mir wo ich falsch mache?

+0

Sie sind Elemente mit 'id' Attribut, nicht' Daten id', also entweder ersetzen die 'id' mit' Daten id' oder die letzte ID anhängt mit '$ (". post-list: last "). attr (" id ")' –

+0

eitan sorry seine ID nur nicht Daten-ID Ich korrigierte im Beispiel –

+0

Ich denke, es könnte ID 93 (als letzte ID) verwenden, weil es ist das letzte, das ohne JS erstellt wurde. Wie wäre es, wenn Sie '.find versuchen (" post-list: last "). Attr (" id "),' –

Antwort

1

Ich glaube, Sie die Daten vom Server zu schnell ziehen, versuchen, eine Fahne hinzufügen, die die Elemente ziehen wird verhindern, während die Anforderung ausgeführt wird:

var flagPulling = false; 
function loadData() { 
    if(flagPulling) { 
     return; 
    } 
    flagPulling = true; 
    $('div.postloader').html('<img src="http://www.zesteve.com/img/loader.gif">'); 
    $.post("/getData.php?lastID=" + $(".post-list:last").attr("id"), function(data){ 
     if (data != "") { 
      $(".post-list:last").after(data);    
     } 
     $('div.postloader').empty(); 
     flagPulling = false; 
    }); 
}; 
+0

Was hast du zum zweiten Mal bearbeitet? alle vorgenommenen Korrekturen –

+0

Was meinst du mit _edited zweiten Mal_? –

+0

wenn ich Seite lade seine fragte mich wieder laden Antwort wird bearbeitet –

0

Vergleichen Sie die folgenden:

$last_id = $_GET['lastID']; 

zu

$.post("/getData.php?lastID=" + $(".post-list:last").attr("id"), function(data){ 

Sie verwenden POST aber für lastID in 01 suchen.

Versuchen

Ändern
$last_id = $_POST['lastID']; 
+0

Weil der Benutzer erhalten Übergibt den Parameter in der Query-Zeichenfolge, es ist auch verfügbar in '$ _GET ['lastID']' –

+0

ja arbeitet in $ _GET auch –

Verwandte Themen