11521 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,
j'ai une fonction enregistrement() qui me fait planter le navigateur. Si j'enlève l'enregistrement dans la variable arretEnregistrement du setTimeout('enregistrement()', 0). Mon navigateur ne plante plus. Pouvez-vous m'aider ? D'avance merci.

function enregistrement(){
	var vitesse = parseInt($("#vitesse").val());
	var altitude = parseInt($("#avion").css("bottom"));
	var onOff = 1;
	$.ajax({
		url: 'traitementDonnees.php',
		type: 'POST',
		data: 'vitesse='+vitesse+'&altitude='+altitude+'&onOff='+onOff
	});
	setTimeout('enregistrement()', 100);
	var arretEnregistrement = setTimeout('enregistrement()', 0);
};
Salut Karl....
Déjà questions :
Qui a fait cette fonction ??
Quel est son but ?

Ensuite un peu d'étude de code et de tentative de compréhension.
La fonction enregistrement, sert à priori à enregistrer les valeurs vitesse, altitude, et onOff via un php donc on peut supposer dans une base de données.
Ensuite on voit 1 premier setTimeout qui relance la fonction 100 millièmes de secondes plus tard :O
Puis enfin un autre qui lance la même fonction mais là à 0 millièmes, donc plantage la valeur 0 n'étant pas une valeur valide.

le process donne donc :

quelque part dans le code un appel à la fonction enregistrement, puis celle-ci se relance 100 millièmes de secondes plus tard, et enfin ça plante.

Y a un gros problème de méthode ou de compréhension.

;)
Bonjour pchlj,
merci de ta réponse,

Voilà le but :

function enregistrement(){
	var vitesse = parseInt($("#vitesse").val());
	var altitude = parseInt($("#avion").css("bottom"));
	var onOff = 1;
	$.ajax({
		url: 'traitementDonnees.php',
		type: 'POST',
		data: 'vitesse='+vitesse+'&altitude='+altitude+'&onOff='+onOff
	});
	setTimeout('enregistrement()', 100);
};

Cette fonction a pour but d'envoyer des données (vitesse, altitude, On/Off) toutes les 100 millièmes de secondes à une bdd via ajax, jquery et php my sql. Tout marche bien jusqu'à présent.
Mais je voudrais faire un clearTimeout sur la fonction enregistrement().
Je ne pensait pas qu'en mettant le timeout dans une variable (var arretEnregistrement = setTimeout('enregistrement()', 0);) dans la fonction que cela allait se lancer.

Ce clearTimeout doit être lancé ailleurs bien entendu.
ah ouaih mais là tu n'utilise pas vraiment la bonne fonction Smiley cligne

il te faut utiliser setInterval et non setTimeout Smiley lol

la doc ici

je t'ai mis direct sur la fonction qui fait le clear pour stopper Smiley cligne