11549 sujets

JavaScript, DOM et API Web HTML5

Bonjour j'ai un souci avec le scroll infini enfaite, en local il marche trés bien mais quand je le met sur mon site, avec chrome jquery ne marche pas et sous firefox il affiche plusieurs fois le même post suivant

voici le code
<script type="text/javascript"  src="jquery.js"></script>
		<script type="text/javascript">
		$(window).scroll(function(){
		
			if($(window).scrollTop() == $(document).height()-$(window).height()){
			
				$.ajax({
					url : "load.php?lastid=" + $("article.nouvelle:last").attr("id"), 
					success: function(html){
						if(html){
							$(".post").append(html);
							$('#loader').hide();
						}else{
							alert('il y a plus de POST!');
						}
					}
				});
			}
		});
		
</script>

Quelqu'un pourais m'aider ? merci!
Salut,

bon je trouve un peu louche la condition
if($(window).scrollTop() == $(document).height()-$(window).height())

Je pense que j'aurai mis un $(window).scrollTop()+ $(window).height() pour comprendre que si la hauteur de la fenêtre plus du scroll == la totalité du document je suis en bas , mais ça reste un détail qui ne change rien..
Ensuite je sais pas pour chrome, mais je trouve louche le
load.php?lastid=" + $("article.nouvelle:last").attr("id")

Est ce que ton code load.php charge l'id que tu lui donne ou il trouve le suivant à partir du dernier ?
Si il charge l'id que tu lui donne c'est sans doute pour ca que ca ne marche pas .. si il trouve tout seul le dernier je vois pas de probleme.
Perso, je ne vois pas d'erreur dans le code fourni..
Oui il charge un id automatique à partir du dernier.
Je comprend pas vraiment non plus étant donné qu'il marche très bien en local, il marche avec firefox seulement si on scroll trop rapidement il affiche plusieurs fois la même requête, d'ailleur il me semble avoir vu quelque pars que c'étais possible de ralentir, comment si oui ?

Et sur chrome rien, je vais voir avec

if($(window).scrollTop() == $(window).scrollTop()+ $(window).height()
Re salut,
Alors ca :
if($(window).scrollTop() == $(window).scrollTop()+ $(window).height()

cela ne marchera pas ... sauf si $(window).height()==0 ... je pense pas que cela soit ca que tu cherche.
Si tu proposes ça suite à ma remarque, je disais juste que je trouvais plus logique de faire
if($(window).scrollTop()+$(window).height() == $(document).height())
au lieu de ce que tu avais mis, mais cela ne change RIEN du tout, je voulais juste dire que je trouvais plus simple a comprendre dans cette ordre la ( position du scroll+taille de la fenêtre égale à la taille du document, ce qui permet de tester si on est arriver en bas ou non).

Pour ce qui est du plusieurs fois le même article, je ne trouve pas logique, normalement une fois que l'on est en bas il ne peut pas scroll plus bas du coup la fonction ne devrait pas être appelée de nouveau et du coup il n'y pas de raison qu'il re rentre dans le if ..

EDIT:
A la limite, dans le if(html) on pourrai vérifier si le dernier ids des articles est différent de celui que l'on va ajouter.. mais bon je trouve pas normal d'avoir a faire ca :s
Modifié par mathieu1004 (01 Feb 2013 - 16:59)
D'accord, peut etre un souci dans mon code "load" ?

Je le met ici au cas ou :
<?php
					try
					{
					$bdd=new PDO('');
					}
					catch(Exception $e)
					{
					die('Erreur: ' .$e->getMessage());
					}
					$req = $bdd->query('SELECT  id, contenu, groupe, DATE_FORMAT(date_post, \'%d/%m/%Y a %Hh%imin%ss\') AS date_creation_fr FROM post WHERE id<\'' . $_GET['lastid'] . '\' ORDER BY date_post DESC LIMIT 0, 1');
					while ($donnees = $req->fetch())
					{?>
					
					<article class="nouvelle" id="<?php echo htmlspecialchars($donnees['id'],ENT_HTML401, 'ISO-8859-1');?>">
					<ul><li ><?php  echo htmlspecialchars($donnees['date_creation_fr'],ENT_HTML401, 'ISO-8859-1') ?></li><li class="groupepost"><?php echo htmlspecialchars($donnees['groupe'],ENT_HTML401, 'ISO-8859-1')?></li><li><a class="liencom" href="commentaires.php?id=<?php echo htmlspecialchars($donnees['id'],ENT_HTML401, 'ISO-8859-1');?>">commentaires</a></li></ul><p><?php echo nl2br( htmlspecialchars($donnees['contenu'],ENT_HTML401, 'ISO-8859-1'));?></p>
					</article> <?php }
						
					
 
					$req->closeCursor();?>


C'est le même code que la page du script.
Modifié par watch34 (01 Feb 2013 - 17:17)