Jump to content
Sign in to follow this  
ricotrutt

Recharger blocs toutes les X secondes

Recommended Posts

Bonjour,

Je cherche à recharger des div dans une page toutes les X secondes. Mon script Ajax ne fonctionne pas car il fait planter le site. Avez-vous une idée pourquoi ?

<script type="text/javascript">
function envoieRequete(url,id,url2,id2)
{
var xhr_object = null;
var xhr_object2 = null;
var position = id;
var position2 = id2;

if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

if(window.XMLHttpRequest) xhr_object2 = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object2 = new ActiveXObject("Microsoft.XMLHTTP");



// On ouvre la requete vers la page désirée 1
xhr_object.open("GET", url, true); //ici false au lieu de true
xhr_object.onreadystatechange = function(){
if ( xhr_object.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position).innerHTML = xhr_object.responseText;
}
}
xhr_object.send(null);
xhr_object2.open("GET", url2, true);//ici false au lieu de true
xhr_object2.onreadystatechange = function(){
if ( xhr_object2.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position2).innerHTML = xhr_object2.responseText;
}
}
xhr_object2.send(null);
// dans le cas du get



//envoieRequete(url,id);
setTimeout(envoieRequete(url,id),1000);

}

</script>

Merci d'avance pour votre aide

Share this post


Link to post
Share on other sites

Salut,

C'est une fonction récursive lancée chaque seconde, et qui à chaque fois re-instancie tous les objets : ça doit consommer des ressources et ça ne doit pas aider le script à tourner "rond" je pense...

Je pense qu'il serait préférable d'instancier les objets une fois pour toutes, et ensuite boucler la requête au serveur.

Sinon, utilise Firebug pour voir ce qui se passe ;)

Edited by Ernestine

Share this post


Link to post
Share on other sites

Ernestine,

J'ai fait à peu près le même diagnostic que toi, mais je n'arrive pas à trouver comment faire pour instancier une fois pour toute. Tu aurais une idée ?

Merci d'avance

Share this post


Link to post
Share on other sites

Bonjour,

Essaie ceci avec Jquery :


var astuce_num = 0;
var astuce_reg=new RegExp("[_]+", "g");
function ShowAstuceBox(){
$.ajax({
method: 'get',
url : 'astuces.php?astuce_num=' + astuce_num,
dataType : 'text',
success: function (text) {
var temp = text;
temp = temp.split(astuce_reg);
astuce_num = parseFloat(temp[0])+1;
$('#astuce').slideToggle('slow', function() {
$('#astuce').html(temp[1]);
$('#astuce').slideToggle('slow');
});
}
});

}
setInterval(ShowAstuceBox, 7500);

Bon courage

Portekoi

Share this post


Link to post
Share on other sites

Ernestine,

J'ai fait à peu près le même diagnostic que toi, mais je n'arrive pas à trouver comment faire pour instancier une fois pour toute. Tu aurais une idée ?

Es-tu vraiment obligé de lancer une fonction récursive pour quelque chose d'aussi simple, à savoir le rechargement de div à intervalles de temps réguliers ? Pourquoi ne pas faire une fonction qui recharge le div (via Ajax), et appeler cette fonction "de l'extérieur", dans une autre boucle ?

Share this post


Link to post
Share on other sites

Ah mais je ne demande pas mieux que de ne pas avoir de boucle récursive. C'est juste que je ne trouve pas comment faire pour recharger un div toutes les X secondes autrement.

Share this post


Link to post
Share on other sites

Pour une action répétée tu as la fonction setInterval

Par exemple :


function rechargerDiv() {
// Contenu de ta fonction qui recharge les div
}
setInterval(rechargerDiv, 1000);

C'est quand même beaucoup mieux que de faire appeler la fonction par elle-même indéfiniment.

Sinon, comme le conseille Portekoi, avec JQuery, c'est quand même plus pratique.

Et en cas de problème, utilise Firebug pour savoir où est l'erreur, ce sera quand même plus facile à diagnostiquer que le coup du, je cite : "mon script Ajax ne fonctionne pas car il fait planter le site." ;)

Edited by Ernestine

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...