Bonsoir,
Je suis sur une création d'une plate-forme de discussion,
Je veux a chaque fois avoir la liste du dernier message de chaque ami, et a chaque fois qu'on clique sur un ami je lis ses messages et je peux lui répondre
donc j'ai deux fonctions avec setTimeout avec ajax (listMsg pour la liste du dernier message de chaque ami, et Msg pour liste des messages d'un ami)
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40 function listMsg(){ var msgajax, id; $.getJSON('controllers/accueil/messages.php',function(data){ msgajax=''; for( var x in data ) { var lignes = data[x]; if(lignes.de != lignes.session) id = lignes.de; else id = lignes.a; $( "body" ).on( "click", "#msg"+id, function(){ if(timer !=''){ clearTimeout(timer); timer=''; function Msg(){ $.getJSON('controllers/accueil/msg.php?id='+ id,function(json){ var msgajx = ''; for( var x in json ) { var ligne = json[x]; msgajx += ligne.msg; } $('#msgajax').html(msgajx); }); timer = setTimeout("msg()", 20000); } Msg(); }); } $("#lesmessages").empty().append(msgajax); }); timermsg = setTimeout("refreshlistmsg()", 20000); } $( "body" ).on( "click", "#miss",function(){ if(timermsg !='') clearTimeout(timermsg); timermsg=''; refreshlistmsg(); });
A première vu tout fonctionne bien mais en regardant sur la console de firefox, lorsque je clique sur la div miss y'a le premier $.getJSON('controllers/accueil/messages.php qui se lance et se relance chaque 20 seconde
mais au clique sur la deuxième div msg+id (msg1 par exemple) le $.getJSON('controllers/accueil/msg.php?id='+id se lance plusieurs fois au même moment et c'est égale au nombre de fois que le $.getJSON('controllers/accueil/messages.php s'est lancer. Donc un gros risque de saturer le serveur
Comment je peux avoir que le deuxième getJSON se lance qu'une seule fois ?
Bonne soirée :-)
Partager