Aller au contenu

Recharger blocs toutes les X secondes


ricotrutt

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres 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 ;)

Modifié par Ernestine
Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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 ?

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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." ;)

Modifié par Ernestine
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...