cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009
-
13 févr. 2009 à 15:58
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 2015
-
16 févr. 2009 à 11:22
Bonjour à tous,
Voilà, j'ai un petit problème avec un simili poup-tooltip. Sur une page, l'utilisateur clique sur une image, ceci appel alors une fonction à base d'ajax qui va récupérer des infos via une page php dans une base de donnée. Lorsque le tooltip/popup s'affiche, des liens sont présents dedans. Jusque là c'est OK.
Le problème c'est que quand l'utilisateur clique sur un lien, on appel de nouveau une fonction ajax qui va rechercher de nouveau des infos et les affiches dans le même tooltip/popup.
Les infos s'affichent bien (fonction talk2), mais tout de suite la fenêtre se ferme.
Voici les codes sources incriminés :
Page principale :
blabla ....
Blabla ...
Blabla ...
Page javascript :
function talk2(type) {
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();// FIREFOX
else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");// IE
document.getElementById("texte").style.display = "none"; //je ferme la boite avant de la réafficher
xhr_object.open("GET", "armes.php?id=" + type, false); //false => on attend le retour
xhr_object.send(null);
document.getElementById("texte").style.display = "block";
document.getElementById("texte").innerHTML=xhr_object.responseText;
}
function talk(type) {
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();// FIREFOX
else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");// IE
xhr_object.open("GET", "talk.php?id=" + type, false); //false => on attend le retour
xhr_object.send(null);
document.getElementById("texte").style.display = "block";
document.getElementById("texte").innerHTML=xhr_object.responseText;
}
La fonction talk renvoit un tableau avec des liens (pas de soucis), dont les liens sont de la forme :
En fait tout fonctionne SAUF que la deuxième fois, la fenêtre se ferme
Merci pour votre aide.
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 14 févr. 2009 à 13:38
Alors j'ai corrigé le double guillemet, mais rien n'a changé.
Comment puis je dire que rien n'est retourne ? Parce que lorsque j'utilise la première méthode (premier post), le retour s'affiche bien, mais se ferme quasi de suite.
Quand je dis que n'est rien n'est retourné, c'est parce que l'alerte est vide :
alert('=>' + xhr_object.responseText + '<='); me retourne =><=, donc il y a un même pas un espace.
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 14 févr. 2009 à 15:07
Hum,
je ne suis pas un grand spécialiste d'ajax, mais si ce que tu disais était la raison, alors quand dans le fichier php, je met uniquement print "toto";
il devrait le retourner, or rien du tout.
Pour moi je pense que le problème est lié à mon appel ajax, mais je ne suis pas assez bon sur ce domaine pour trouver le problème.
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 14 févr. 2009 à 15:12
Tu vois le problème est au niveau de méthode d'appel sur le fichier php.
Si je modifie le code, en mettant false au lieu de true, que j'enlève alors le test du code état (inutile puisque je suis synchrone), dans ce cas, le tableau s'affiche, mais disparaît instantanément.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 14 févr. 2009 à 15:32
>>je met uniquement print "toto"; il devrait le retourner, or rien du tout.
c'est ce que je te proposais
il faut donc regarder de plus près coté html/javascript
dès que possible, je jette un oeil, et nick va repasser lui aussi...
mais, rien du tout ou effacé ?
je t'avoue que j'ai des doutes
tu affiches "=><=", donc à priori l'appel semble correct ?
et pourtant tu nous dit qu'avec echo 'exemple'; seul,
dans armes.php, tu n'affiches pas =>exemple<= ?
>>le tableau s'affiche, mais disparaît instantanément.
faut donc regarder ce qui se passe suite à l'affichage...
l'appel semble correct, l'affichage aussi, puis on l'efface
( ou on recharge la page )
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 15 févr. 2009 à 07:17
bon déjà pour asynchrone : ça baigne
je n'ai modifié que peu de choses, pas testé tel que tu nous as mis,
et pas sûr d'ailleurs que cela ait une importance ?
<script>
var xhr_object;
function talk2(type)
{ if (window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
//####document.getElementById("texte").style.display = "none"; inutile pour le test
xhr_object.onreadystatechange = function() { talk3(xhr_object); }; //#### mis avant open
xhr_object.open("GET", "armes.php?id=" + type, true);
xhr_object.send(""); //#### au lieu de null
}
function talk3(xhr_object)
{ if (xhr_object.readyState==4)
{
//####document.getElementById("texte").style.display = "block"; inutile pour le test
document.getElementById("texte").innerHTML+="
"+xhr_object.responseText;
//#### pour voir plusieurs appels
}
}
</script>
et pour l'affichage qui disparaît.... faut voir ce qui se passe
derrière cet affichage.
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 15 févr. 2009 à 13:59
Non pas vraiment, je sais juste que dorénavant, le problème n'est pas mes requêtes ajax, ni le retour du php, mais plutôt un problème lié je pense à ma première requête ajax (talk1). Il doit y avoir un truc qui se fais pas bien. Il faudra que je teste cà ce soir (là je pars me balader avec mes enfants).