ricotrutt Posted July 28, 2010 Share Posted July 28, 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 Link to comment Share on other sites More sharing options...
Ernestine Posted July 29, 2010 Share Posted July 29, 2010 (edited) 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 July 29, 2010 by Ernestine Link to comment Share on other sites More sharing options...
ricotrutt Posted July 30, 2010 Author Share Posted July 30, 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 Link to comment Share on other sites More sharing options...
Portekoi Posted July 30, 2010 Share Posted July 30, 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 Link to comment Share on other sites More sharing options...
Ernestine Posted July 30, 2010 Share Posted July 30, 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 ? Link to comment Share on other sites More sharing options...
ricotrutt Posted July 31, 2010 Author Share Posted July 31, 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. Link to comment Share on other sites More sharing options...
Ernestine Posted July 31, 2010 Share Posted July 31, 2010 (edited) 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 July 31, 2010 by Ernestine Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now