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 16 févr. 2009 à 11:07
Ca y est j'ai trouvé le pourquoi du comment de tout cà ! Mais je ne comprends pas pourquoi celà n'a pas plu au code ajax.
Donc, voici la réponse, lorsque je clique sur la fonction talk, j'ai le droit à un dialogue. Sur ce même dialogue certaines lignes pour renvoyer au dialogue talk2 sont codés comme suit :
[ Blabla]
Et bien pour que le texte de talk2 reste, il a fallu mettre href="#".
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 13 févr. 2009 à 17:22
Peut être celà peut il aider, mais IE affiche en bas de browser le symbole d'exclamation en disant :
'Ligne 309, car 16, caractère incorrect, Code: 0, URL: http://localhost/' (je précise, j'ai fais un test sur un serveur Web, même problème).
La seule chose c'est que la ligne 309, je ne sait pas à quoi elle fais référence. A la page originale ? Si oui, la ligne n'a aucune erreur. Si c'est à une compilation de la page PHP + des templates alors là on est mal parti
Par contre et c'est vrai que je ne l'ai pas dit (honte à moi ), lorsque la boîte se ferme, je reviens à la page d'acceuil du site.
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 13 févr. 2009 à 17:34
Ok, la seule chose qui m'étonne un peu c'est t'as façon de codé ton appel Ajax.
Normalement lors de l'envoie des valeurs au serveur, on définit quelle fonction va recevoir le résultat et on y traite les différentes réponses qu'Ajax renvoie ainsi que le résultat finale.
C'est peut-être tout simplement de là que provient ton erreur.
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 13 févr. 2009 à 18:56
Et voilà, j'ai testé avec la console, il n'y a aucune erreur.
Concernant l'appel Ajax, tu aurais plus vu un truc du genre :
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);
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 13 févr. 2009 à 20:59
Bien, je crois que tu as entièrement raison :
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, true );
xhr_object.send(null);
cs_whiteange
Messages postés22Date d'inscriptionmercredi 23 juin 2004StatutMembreDernière intervention16 février 2009 14 févr. 2009 à 11:38
Je suis désolé Bul3, mais je ne comprends pas tout. Qu'elle est la différence par rapport à mon dernier post avec ce que tu écris ?
Tu me dis d'attendre la réponse d'Ajax, c'est ce que je fais, mais le problème c'est qu'il me retourne un contenu à vide.