ricotrutt Posté 28 Juillet 2010 Posté 28 Juillet 2010 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
Ernestine Posté 29 Juillet 2010 Posté 29 Juillet 2010 (modifié) 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é 29 Juillet 2010 par Ernestine
ricotrutt Posté 30 Juillet 2010 Auteur Posté 30 Juillet 2010 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
Portekoi Posté 30 Juillet 2010 Posté 30 Juillet 2010 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
Ernestine Posté 30 Juillet 2010 Posté 30 Juillet 2010 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 ?
ricotrutt Posté 31 Juillet 2010 Auteur Posté 31 Juillet 2010 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.
Ernestine Posté 31 Juillet 2010 Posté 31 Juillet 2010 (modifié) 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é 31 Juillet 2010 par Ernestine
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant