2010-10-21 5 views
0

Je crée ce code qui, après 9 secondes, appelle une fonction ajax, et imprime le résultat élaboré depuis le serveur vers le client.PHP + Jquery - déplacement de la page après un appel ajax

Voici le code JS:

function changeSponsor() { 
    $.ajax({ 
     type: 'POST', 
     cache: false, 
     url: './auth/ajax.php', 
     data: 'id=changespon', 
     success: function(msg) { 
      $('.menusponsor').hide().fadeIn(1000).html(msg); 
     } 
    }); 
} 

$(document).ready(function() { 
    x=window.setInterval("changeSponsor()", 9000); 
}); 

le résultat est imprimé sur une div en haut de la page. quand le résultat est imprimé au client (après, comme dit, 9 secondes), et je suis au bas de la page, la page va automatiquement en haut. Je ne veux pas ça.

Vous pouvez voir un exemple à ce link: ouvrez cette page, allez en bas (n'est pas si long cette page) et après quelques secondes (9). Vous allez voir le défilement de la page en haut.

Comment résoudre ce problème? Bravo

Répondre

2

Il ne semble pas que tout ce que vous mentionnez déplacer la page vers le haut, il doit être quelque chose d'autre?

J'ai trouvé que la page se déplace normalement lorsque vous faites quelque chose à l'URL, comme l'ajout d'un hachage (#)? Ajoutez-vous un hachage ou modifiez-vous l'url de quelque façon que ce soit?

solution:

oh le problème est avec votre code html, vous devez cacher l'enfant de menusponsor et non le conteneur lui-même.

essayer cette

function changeSponsor() { 
    $.ajax({ 
     type: 'POST', 
     cache: false, 
     url: './auth/ajax.php', 
     data: 'id=changespon', 
     success: function(msg) { 
      $('.menusponsor').find('div').hide().fadeIn(1000).html(msg); 
     } 
    }); 
} 
+0

non, je ne modifie pas l'URL. J'ai essayé d'ajouter le retour faux; mais ça ne change pas! puis-je poster un lien? donc vous pouvez voir :) – markzzz

+0

Je pense que je sais comment résoudre votre problème –

+0

J'ai modifié ma solution au travail :) –

1

Pouvez-vous nous en dire un peu plus sur ce qui se passe quand la page saute en haut? Appelez-vous cette fonction ailleurs que this setInterval?

À quoi ressemble votre code html? Si vous remplacez une grande partie de la page, il est possible que, pendant une fraction de seconde, la page soit très courte, ce qui vous place en haut de la page.

+0

cette fonction il suffit de commencer (comme vous pouvez le voir dans la fonction document.ready) lorsque la page est chargée. Je n'ai rien qui l'appelle, juste la page elle-même. La page va en haut quand elle reçoit les données du serveur, après (naturellement) l'appel ajax. Est-ce plus clair maintenant? :) – markzzz

+0

@markzzz Non, pas vraiment. Vous venez de décrire ce que vous voyez, mais vous ne me montrez pas votre code HTML. La réponse courte est: il n'y a rien de mal avec le code que vous avez posté (même si ce '.hide(). FadeIn (1000) .html (msg)' est un peu nébuleux), donc il doit être ailleurs. – treeface

+0

ok! J'ai ajouté un lien, de sorte que vous pouvez voir l'ensemble du code :) – markzzz

Questions connexes