Bonjour,
Pourquoi lors d'un retour de données json une class n'est pas prise en compte à l'affichage ?
Merci
...
<a class="tool" href="#" title="Le poids recommandé pour les fichiers images est de 100 ko"><img src="files/ic_warning.gif"/></a>
...
die(json_encode($return));
La class "tool" sur le lien href n'est pas prise en compte.
sans problème, je te remercie de ton aide. Merci.
oui mon souci est résolu.
En fait la class tool correspond à l'affichage d'une info-bulle et suite à l'affichage des données json cette class n'affiche pas l'info-bulle.
donc c'est un problème javascript (l'affichage d'une infobulle) après un die() (en php) donc ça n'a aucun rapport avec json.
on a juste que le script javascript n'est pas pris en compte lorsque la page n'est pas chargé en totalité (ce qui peut paraitre logique car il manque tout ce qui se trouve après le die )
veut-tu absolument mettre un die? car normalement c'est réservé après des erreurs critiques ou après une redirection, bref a des moments ou on a pas besoins d'infobulles.
si oui, où dans ta page html est inséré le javascript qui ajoute les infobulles aux éléments de class "tool"?
le js qui gere l'infobulle est insere en fin de page avant la fin du body.
est ce que un echo resoudrai mon souci ?
du coup le die empêche le script d'être ajouté à la page. Si tu veux absolument le die, ajoute le script dans le <head> mais sinon tu peut juste remplacer le die par un echo oui.
j'ai remplacé le die par echo mais cela ne change rien.
Est-ce que cela reste correct si je regroupe le retour dans une var ($liste) par exemple
et que je retourne cette variable directement dans le js ?
$html = "";
$html = "code html + php";
echo $html
// et dans le code js
$.ajax({
url : 'ajax/mediatheque.php',
data : {id:idDir,action:'list'},
type : 'post',
dataType : 'json',
success : function(data){
$(".medias").empty();
$(".medias").html(data);
}
});
car si c'est le cas c'est normal que l'infobulle ne soit pas prise en compte.
Toujour si c'est le cas tu peut essayer ça, dans le script qui ajoute l'infobulle:
remplacer
$('.tool').click( ...
par
$('.tool').live('click', ...
ou alors apres avoir mis a jour le DOM, re-appelé le script pour l'infobulle.
genre après
$(".medias").html(data);
ajouter
$(".medias .tools").infobulle({ ... });
J'ai trouvé la solution !!!
Juste après avoir chargé le contenu je rajoute la fonction infobulle dans le js :
$(recipient).append(data.listing);
$(".tool").tooltip({
'placement':'bottom'
});
c'est quand même ce que je t'avais proposé de faire à la fin de mon dernier message mais c'est pas grave ^^.
résolu?