Vous n'êtes pas identifié.
Quand on clique rapidement sur les [+], seul le dernier hololog s'affiche.
La cause : la variable g_id est globale, donc écrasée lors d'un nouvel appel.
Il faudrait le donner en paramètre à la fonction handleAJAXReturn pour éviter ce souci.
C'est pas à mettre en priorité dans la Todo list, mais ça me passe par la tête, donc je note ici
Hors ligne
Bah n'hésitez plus à faire vos propres TODO, si vous pouvez apporter des améliorations au jeu.
Vu que le code on est en train de l'ouvrir, vous pourrez tous proposer vos bouts de code à intégrer au jeu.
EDIT : Je précise quand même : "quand c'est pertinent". Inutile de perdre son temps pour implémenter une fonction qui n'a pas été validée par les admins.
Hors ligne
J'ai pas compris le problème.
Pourquoi vouloir cliquer rapidement ? define "rapidement" ?
Hors ligne
"Pourquoi vouloir cliquer rapidement"
=> Hum... c'est par habitude en fait, j'ai cliqué sur le second [+] sans attendre que le premier soit ouvert.
"define rapidement"
=> Assez vite pour lancer deux requêtes Ajax en simultané (cf au dessus).
Hors ligne
ah ouaip ! j'avais remarqué la même chose, parce que j'ai aussi cette habitude de cliquer rapidement sur les +
Hors ligne
Quand je compile les soins, j'attends rarement que chaque hololog se déplie de mon côté. Je clique sur tous les holologs et je reviens après sur ceux qui ne se sont pas ouverts. S'ils pouvaient tous se déplier en même temps, ce serait plus mieux.
Dernière modification par Kriss (04-11-2010 19:15:28)
Hors ligne
[Admin] Uld a écrit:
define "rapidement" ?
Ça dépend beaucoup de la charge du serveur à ce moment-là, mais au pire des pires ça peut aller jusqu'à 10 - 20 secondes entre deux clics.
Dit comme ça, évidemment, ça ne paraît pas particulièrement gênant, mais quand on a une vingtaine d'holologs à lire ça se compte assez vite en minutes.
Dernière modification par Subotai (04-11-2010 19:44:00)
Hors ligne
[Admin] Lunch a écrit:
Bah n'hésitez plus à faire vos propres TODO, si vous pouvez apporter des améliorations au jeu.
Vu que le code on est en train de l'ouvrir, vous pourrez tous proposer vos bouts de code à intégrer au jeu.
Pas encore d'accès SVN, mais pour la modif à laquelle je pensais, c'est ça :
function handleAJAXReturn(g_id) {
return function() {
if (http.readyState == 4) {
if (http.status == 200) {
var m = "mess" + g_id;
document.getElementById(m).innerHTML = http.responseText;
Effect.toggle(m, "slide");
} else {
alert("Il y a un problème momentané sur le serveur.\nRéessayez plus tard.");
}
}
}
}
Du coup, lors de la requête Ajax, ça devient :
function aff(id, req, env) {
if (document.getElementById("mess" + id).innerHTML == "") {
g_id = id;
http = createRequestObject();
http.open("POST", "ajax/ajax_messagerie.php?afficher=" + id + "&envoye=" + env, true);
http.onreadystatechange = handleAJAXReturn(id);
http.send(null);
if (req == 1) {
lu(id);
}
} else {
Effect.toggle("mess" + id, "slide");
}
}
En bleu ce que j'ajoute, en rouge/barré ce que je supprime, je n'ai fait aucune autre modification.
Dernière modification par John Gindrelli (04-11-2010 20:02:06)
Hors ligne
pourquoi pas plutôt récupérer l'id du message dans la chaine retournée en ajax?
le mien est du genre :
http://www.arkhan.org/ajax/ajax_message … p;envoye=0 =>
"<p class="detail">Destinataire(s):
<b><span id="dest_670236">Guigolum</span></b></p>
<p class="message" id="id_670236">Vous venez de récupérer 2 PV</p>
"
donc on peut le faire de manière crade avec un
var message_id=http.responseText.replace('.*class="message" id="id_(.*)".*','$1')
(testé avec http://www.regular-expressions.info/jav … ample.html )
ou de manière plus propre avec du XPath, je pense.
Hors ligne
Guigolum a écrit:
pourquoi pas plutôt récupérer l'id du message dans la chaine retournée en ajax?
[...]
ou de manière plus propre avec du XPath, je pense.
Parce qu'en général, on aime bien faire simple...
Pourquoi s'embêter à jouer avec la chaine de caractères retournée alors qu'on a déjà l'ID dans une variable ?
---
edit : D'ailleurs, dans ta regex, j'aurais mis (\d+) plutôt que (.*), et puis en général, je préfère "match" à "replace" pour récupérer des valeurs... ^^
---
edit 2 : Autre raison, s'il y a une erreur coté PHP, ma version affichera le message d'erreur au lieu du message, la tienne fera planter le script
Dernière modification par John Gindrelli (05-11-2010 11:52:08)
Hors ligne
Patch validé.
Normalement, ça devrait maintenant fonctionner.
Bon jeu !
Hors ligne
J'ai testé, ça fonctionne
On peut enfin cliquer frénétiquement sur les [+] et juste attendre que tout s'ouvre
Hors ligne
cool ! ça faisait un moment que je pestais contre la perte de temps énorme à tout ouvrir un par un avec le délai d'attente. Merci Marmotte !
Dernière modification par [Admin] Agô le velu (15-02-2011 23:48:24)
Hors ligne
Trop fort ce Marmotte
Hors ligne