2017-08-01 4 views
-3

Ich bin neu hier, also bitte mit mir ertragen. Ich benutze jQuery infinite-scroll, um den Inhalt beim Scrollen zu laden. Während dies gut funktioniert, wird sich dieser Inhalt mit Benutzereingaben unter Verwendung von Ajax ändern. Was ich tun möchte, ist neu zu laden/Refresh Infinite Scroll-Code auf Ajax Inhalt laden.So laden Sie ein Skript mit jQuery

Dies ist unendlich-Scroll-Code

Plugin: https://infinite-scroll.com/

$('#content').infiniteScroll({ 
    // options 
    path: '#page-nav a', 
    append: '.post', 
    history: false, 
    status: '.page-load-status', 
}); 

Das ist mein Ajax-Code zum Inhalt neu zu laden.

$("#searchContent :input").change(function() { 
    var formData = { 
     'title' : $('input[name=title]:checked').val(), 
     'tags' : $('input[name=tags]').val() 
    }; 
    $.ajax({ 
     type: "POST", 
     url: "get_content.php", 
     data: formData, 
     cache: false, 
     dataType:'json', 
     success: function(json) { 
     $("#content").html(json.content); 
     } 
    }); 
}); 

Alles, was ich tun möchte, ist unendlich Scroll-Code nachladen, wenn Ajax-Post-Funktion ausgeführt wird. Kann mir jemand zeigen, wie ich das erreichen kann? schätzen Sie Ihre Zeit.

+0

Plugin erneut aufrufen, nachdem Sie den Inhalt in 'Erfolg' geändert haben – charlietfl

+0

@charlietfl wird dies nicht mit dem bereits geladenen Code kollidieren? – Melanie

+0

Werfen Sie einen genaueren Blick auf die Dokumentation, es ist eigentlich nicht erforderlich, dass Sie Ihre eigenen AJAX-Funktionen enthalten, und der Aufruf von jQuerys html() -Funktion bedeutet, dass Sie nicht infinate scroll verwenden, sondern nur die Seite ersetzen, die ich vermeiden würde Das. Wenn niemand antwortet, bevor ich heute Nacht nach Hause komme, werde ich ein gutes Beispiel geben. – Kodaloid

Antwort

1

Sie müssen neu initiieren Plugin für neuen DOM:

$("#searchContent :input").change(function() { 
    var formData = { 
    'title': $('input[name=title]:checked').val(), 
    'tags': $('input[name=tags]').val() 
    }; 
    $.ajax({ 
    type: "POST", 
    url: "get_content.php", 
    data: formData, 
    cache: false, 
    dataType: 'json', 
    success: function(json) { 
     $("#content") 
     .html(json.content) 
     .infiniteScroll({ 
     // options 
      path: '#page-nav a', 
      append: '.post', 
      history: false, 
      status: '.page-load-status', 
     }); 
    } 
    }); 
}); 

Side Noten

Normalerweise unendliche Scroll bedeutet Auto-Seite ohne Paginierung klicken. Aber Sie entfernen nur alte Inhalte und fügen neue hinzu, anstatt an vorhandene Elemente anzuhängen. Was genau versuchst du zu tun?

Versuchen $('form').serialize() statt var formData = {}

Sie Elemente direkt von Json Antwort hinzufügen. Vielleicht versuchen Sie eine Vorlage, wo Sie nur Werte ersetzen?

+0

ich bekomme einen Fehler 'TypeError: o._init ist keine Funktion' – Melanie

Verwandte Themen