La mauvaise récupération de variables dans une fonction
Bonsoir,
J'exécute plusieurs fonctions, la première fonction récupère la liste des derniers messages et la deuxième fonction récupère les derniers messages d'un seul utilisateur.
Code:
1 2 3 4
| $( "body" ).on( "click", "#miss", function(){
if(timermsg !='') clearTimeout(timermsg); timermsg='';
refreshlistmsg();
}); |
La fonction pour la liste de messages d'un seul utilisateur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function refreshmsg(titi){
jQuery.ajax({
type: 'POST',
url: 'controllers/accueil/msg.php',
dataType : 'json',
data: { id: titi },
success: function(json) {
var xxx = JSON.stringify(json);
var obj = eval('(' + xxx + ')');
var msgajx = '';
for( var x in obj ) {
var ligne = obj[x];
msgajx += ligne.de;
}
$('#msgajax').html(msgajx);
}
});
timer = setTimeout("refreshmsg(titi)", 20000);
} |
La fonction pour la liste des messages, qui fera appel à la fonction liste des messages d'un utilisateur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| function refreshlistmsg(){
jQuery.ajax({
type: 'POST',
url: 'controllers/accueil/messages.php',
dataType : 'json',
success: function(jsonn) {
var zzz = JSON.stringify(jsonn);
var objj = eval('(' + zzz + ')');
var msgajax = '';
for( var z in objj ) {
var ligne = objj[z];
titi = ligne.de
alert(titi);
id = msg + ligne.de;
$( "body" ).on( "click", "#"+id, function(){
if(timer !='') clearTimeout(timer); timer='';
alert(titi);
refreshmsg(titi);
});
}
}
})
timermsg = setTimeout("refreshlistmsg()", 20000);
} |
Le soucis est le suivant:
Quand je fais le premier clique sur #miss, la fonction refreshlistmsg() s'exécute et l'alert(titi) de la ligne 13 m'affiche bien les IDs voulu 5 4 1 2, mais le deuxième clique de la ligne 16 fait l'alert(titi) de la ligne 18 m'affiche 2 2 2 2 c.a.d quatre fois le dernier ID du premier alert(titi)
Comment je peux faire pour avoir les mêmes IDs du le premier alert dans le deuxième alert ?
Et aussi comment faire pour que le deuxième alert ne s'exécute qu'une seule fois lord du clique de la ligne 16 ?
Bonsoir :-)