2016-01-19 1 views
0

infini J'essaie de trouver défilement infini avec l'histoire et la pagination, tel que recommandé par google, https://googlewebmastercentral.blogspot.in/2014/02/infinite-scroll-search-friendly.htmlJohn Mueller scroll

Démo de John Mueller fait exactement ce que je veux, mais je ne peux pas comprendre comment/où les données sont en cours de chargement. J'ai copié la source de la page et js et css, mais bien sûr, la source est pour la "page" sur laquelle elle se trouve. Tout pointe juste vers le répertoire/items et la page n'est pas rechargée sur de nouvelles données, juste la zone de contenu est rafraîchie, donc je ne comprends pas.

Probablement juste être un noob, mais n'importe quel aperçu apprécié.

+0

Vous avez quelque part un rappel qui est appelé lorsque vous vous approchez de la fin du défilement, et De nouvelles données sont nécessaires. Vous faites un appel ajax là, et ajoutez les éléments nouvellement reçus à votre liste (dans DOM). Veuillez poster votre code, donc nous pouvons vous aider – Gavriel

+0

Je comprends, mais je ne vois pas comment/où les données réelles sont récupérées. L'appel ajax à/items? Page = 2 ne me montre pas comment les données sont accédées et formatées. – twiddly

Répondre

1

La page échantillon utilise un service disponible à http://scrollsample.appspot.com en utilisant l'URL complète http://scrollsample.appspot.com/items?page=2&type=json pour obtenir les données spécifiques paginés dans un type de retour de JSON.

Vous pouvez passer cette URL dans un navigateur et consulter les données brutes renvoyées par le service.

Le fait que la page Web soit également hébergée à la même URL de base est sans importance. Une fois que vous avez ajouté les paramètres en question, vous n'obtenez plus le "site Web" HTML. Au lieu de cela, vous obtenez une réponse de données formatée (dans ce cas JSON).

+0

Merci, il semble évident maintenant. J'ai manqué l'importance du paramètre type = json. – twiddly

+0

Ok, je suis plus proche mais toujours coincé. Quelqu'un peut-il avoir un exemple entièrement fonctionnel avec tout le code source pour cela? J'ai essayé d'émuler ce qui se passe avec le paramètre type = json et j'ai réussi à obtenir un chargement de page mais rien de plus. – twiddly

0

Les données sont en cours de chargement à partir « http://scrollsample.appspot.com/items?page=2&type=json » lorsque vous démarrez la page, la fonction primeCache() est appelée et peuplez « next_data_cache » var.

Lorsque vous scrrouillez la page, une autre fonction est appelée, cette fois est 'showFollowing()' qui obtient les données en faisant un getJSON et en transmettant des données à 'next_data_cache' var.

+0

Je reçois beaucoup de [sorte de], mais je ne vois pas d'où proviennent les données. getJSON utilise la même url/items & page = un certain nombre mais je ne vois nulle part où les données réelles sont récupérées. Les exemples de sites indiquent "Ceci est une liste d'éléments de GetHypedTracks de last.fm", mais je ne trouve aucune référence à ces données. – twiddly

+0

@twiddy, voir ma réponse pour le code qui récupère les données – Gavriel

+0

@twiddly probablement http://scrollsample.appspot.com/items?page=2&type=json a un code côté serveur qui fait la demande à 'last.fm ', donc vous obtiendrez seulement le résultat, pas le code et l'adresse où les données sont chargées –

0

Je vois cela dans leur code:

$.getJSON(next_data_url, function(data) { 
    showFollowing(data); 
    is_loading = 0; 
}); 
+0

Pourriez-vous expliquer comment votre réponse aborde le (s) problème (s) de la question?Les réponses au code seulement ne sont pas très utiles, en particulier pour les lecteurs qui tombent sur ce post. – Cristik

+0

Citation: "La démo de John Mueller fait exactement ce que je veux, mais je ne peux pas comprendre comment/où les données sont chargées" – Gavriel

1

Si vous « Afficher la source », vous verrez qu'ils reference a file of JavaScript

Dans ce fichier sont les fonctions qui mettent en œuvre la pagination. Par exemple, dans la fonction loadFollowing(), vous verrez un appel à $.getJSON() qui récupère les données JSON via AJAX. Il appelle ensuite une fonction showFollowing() qui ajoute le contenu (qui est entré dans les données JSON) à la page avec: $('div.listitempage:last').after(data.response);