11540 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,
Bonne et heureuse année de passage ;
Mon problème est le suivant :
Je suis entrain de concevoir une application web sur un page unique dont les événements, actions et affichages sont faits en ajax (Jquery).
Mais l’application consomme beaucoup de ressource serveur à cause du fait que je ne parvient pas à effacer (ou plus tôt détacher) les fonctions qui ne me serve à rien quand j’en ai terminer avec.
Par exemple j’ai le code suivant :


$(document).ready(function(){
	 
		//Cette fonction est appelé avce un click
		$('.favorite').click(function() {
			                
	        $.ajax({
                                        
				 url: 'http://www.site.com/favorite.php',
                                        
				type: 'POST',
                                        
				async : false,
                                        
				error: function(){alert("theres an error with AJAX");},
                                        
				success:function(data_msg) {
							 alert('merci');
		                }
			});

         return false;
        });
				  
		
		//Ici on fait les mises à jour pour avoir les tous derniers commentaire en ajax
		var auto_refresh_talk = setInterval(function ()
        {
		    var form_data_talk = {user: $("#my_count").val()};
			
           $.ajax({
				type: 'post',
				url: 'http://www.site.com/commentaire.php',						
				async : false,						
				data: form_data_talk,
				success: function(data_maj){					
				          alert(data_maj);	
				                    }
			});				
        }, 3000); 			
});	

J’ai plusieurs affichages qui doivent utiliser ce fichier JavaScript que je dois charger en même temps que les éléments qui doivent utiliser ce fichier JavaScript.
Le hic c’est que la fonction setInterval() par exemple fait de plus en plus de requête à la seconde vers le serveur chaque fois que je recharge ce fichier JavaScript avec les nouveaux éléments qu’il doit prendre en compte.
Comment faire pour effacer ce fichier JavaScript de la page (du moins ses instructions) avant de le recharger de nouveau pour qu’il prennent en compte les nouveaux éléments chargé en Ajax.
Merci à tous et joyeuse nouvelle année
Bonjour,

Il va falloir essayer d'être plus clair Smiley decu

"J’ai plusieurs affichages qui doivent utiliser ce fichier JavaScript": pas compris
"que je dois charger en même temps que les éléments qui doivent utiliser ce fichier JavaScript": encore moins compris Smiley mur

Si tu charges plusieurs fois ton fichier javascript dans ta page web, il est exécuté plusieurs fois. J'essayerai d'être plus précis quand j'aurai mieux compris ton problème...

Déjà, je pense qu'il faut oublier le async:false. Définitivement.
Salut à tous,
Je m’excuse pour ma réaction tardive du à ma connexion internet.

Je vais essayer plus clairement mon problème.

J’ai conçu une page à la manière un peu de « Gmail hors ligne »(Une application de Google qui permet de lire ses mail).L’application utilise beaucoup d’Ajax pour recharger des bouts de page tout au long des manipulations fait par un user.

S’il veut consulter la liste des messages reçus, je charge dans le <div id= ‘ contenu ‘> :
- le bout de page qui affiche ses messages reçus
- le fichier JavaScript qui va vérifier les derniers messages privés en instantanée(en ajax)

S’il veut ensuite consulter les messages du mini forum,je charge dans le <div id= ‘ contenu ‘> :
- je charge le bout de page qui affiche les derniers messages du mini forum
- je charge le fichier javascript qui va vérifier les derniers messages du forum en ajax

Le problème est que si l’user revient consulter sa messagerie privé après avoir consulter le mini forum,le fichier javascript qui vérifie les derniers messages privés en ajax fait deux fois plus de requête ajax que prévu.

Le fichier .JS de la messagerie semble se dupliquer autant de fois que je reviens à la messagerie, ce qui cause les requêtes multiples bien que je pensais avoir supprimé ce fichier en mettant du nouveau contenu dans le < div id= ‘ contenu ‘>

J’espère que c’est plus clair, s’il vous plait j’attends vos réponses.

J’ai pris note du « async :false »,mais rien y change trop. Merci à tous