Jquerry Jgrowl et Ajax

Résolu
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 - 28 déc. 2010 à 22:35
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 - 30 déc. 2010 à 19:41
Jgrowl est un plugin de Jquery permettant d'afficher des message inobstrusif de notification à la façon de Growl de Mac (pour situer le problème).

Ce système fonctionne bien si je l'utilise comme cela :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml" debug="true"> 
<head> 
<title>jGrowl Tests</title> 
<link rel="stylesheet" href="css/jquery.jgrowl.css" type="text/css"/> 

<script type="text/javascript" src="script/jquery.js"></script> 
<script type="text/javascript" src="script/jquery.jgrowl.js"></script> 
</head> 
    	<script type="text/javascript"> 
 
(function($){
 
$(document).ready(function(){

$.jGrowl.defaults.closer = false;
 
if ( !$.browser.safari ) {
$.jGrowl.defaults.animateOpen = {
width: 'show'
};
$.jGrowl.defaults.animateClose = {
width: 'hide'
};
}
 
$('#mapright').jGrowl("Hello world!", { sticky: true });

});
})(jQuery);
 
</script> 
 



lol







lol




 
</html>


La classe de ma div map right, jGrowl center2 a été modifié par moi même si vous voulez vous même tester ce code remplacé là par jGrowl center, ou enlevez la classe.

J'aimerai maintenant faire apparaitre cette notification suite à une requête ajax...

Sauf que le même code ne parvient pas à afficher l'info-bulle... Je ne comprends pas du tout... J'ai essayé d'inclure la div id="mapright" dans ma page Ajax, j'ai essayé de l'inclure dans la page depuis laquelle la fonction Ajax est appelée, rien n'y fait...

Est-ce que quelqu'un aurait une solution, cela me rappelle le bug que provoque Jquery et ses tooltip qui n'étaient pas refresh une fois une requête Ajax effectuée, pour y remédier il fallait faire appel à la fonction live() de jquery, ce que j'ai tenté de réalisé en l'espèce sans succés, quelqu'un aurait-il une solution ???

Merci de votre lecture !!
Bonne journée à tous =)

6 réponses

monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
30 déc. 2010 à 01:25
Oyez oyez bonnes gens !

Voici la solution : punaise j'ai résolu deux de mes problèmes tout seul aujourd'hui, serais-je entrain d'apprendre à programmer correctement ???

Il suffit d'ajouter à la fonction ajax ceci :

var mesScripts = document.getElementById("mapleft").getElementsByTagName("script");
for (var i=0; i<mesScripts.length; i++) {
eval(mesScripts[i].innerHTML);


Cela permet à la page chargé par Ajax de "reformer" les balises <script> ahahah !
Ca va résoudre beaucoup de problèmes pour tout le monde je crois ^^

Chaque fois qu'on avait un problème avec une actualisation d'un script après une requête Ajax et bien cela le réduit a néant ^^

Bonne journée à tous héhé !
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
29 déc. 2010 à 14:08
Bonjour,
essaies de mettre dans la fonction callback de la requête ajax la commande
var sText = oXhr.responseText;
$('#mapright').jGrowl( szText, { sticky: true });

;O)
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
29 déc. 2010 à 14:38
Merci du conseil, j'essaie dès que je peux et je te tiens au courant là j'ai touché au code sans uploadé la source sur mon environnement de travail de groupe et je suis paumé dans des erreurs :p ... Mdr vive l'amateurisme !

Merci de ta réponse !
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
29 déc. 2010 à 16:20
Question le "Hello World" je le mets où du coup ?
Enfin ça sera une variable après :p

Bonne journée à tous =)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
30 déc. 2010 à 16:15
Bonjour,
il fallait faire fort pour deviner ton réel besoin.

Si je puis me permettre ajoutes un try{...}catch(e){} pour ton eval cela évitera éventuellement de planter tes scripts si il y a une erreur dans ceux que tu charges
try{
  eval(mesScripts[i].innerHTML);
}
catch(e){}

Mais puisque tu utilises jQuery autant l'utiliser complètement, qui plus est il prend très bien en charge les scripts contenus dans les pages insérées
$.ajax({
  type: "GET",
  cache : false,
  url: "url_a_ouvrir.html",
  complete : function( data){
    var oDest = $("#DESTINATION");
    oDest.append( data.responseText);
  }
});

Cela ne minimise en rien tes recherches et découvertes nocturnes, alors bonne continuation.
;O)
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
30 déc. 2010 à 19:41
En fait, pour Ajax je code directement, jquery me sert uniquement pour les info-bulle je préfère m'en tenir là, car pour débuter avec Ajax j'étais partis sur du prototype et là niveau compatibilité c'était le bordel, mais un sacré bordel. Mes requêtes ne fonctionnaient pas sous-ie et sous FF je crois...

Enfin voilà merci pour ta science, je sais que ma question était très mal posée j'étais extrêmement fatigué, je révise le master la journée je code la nuit et j'oublie bien souvent de dormir. On a de l'ambition au détriment de la santé de nos jours ! ^^
0
Rejoignez-nous