Jquerry Jgrowl et Ajax [Résolu]

Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Dernière intervention
13 mai 2013
- 28 déc. 2010 à 22:35 - Dernière réponse :
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
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 =)
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Dernière intervention
13 mai 2013
- 30 déc. 2010 à 01:25
3
Merci
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é !

Merci monoski 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de monoski
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 29 déc. 2010 à 14:08
0
Merci
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)
Commenter la réponse de PetoleTeam
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Dernière intervention
13 mai 2013
- 29 déc. 2010 à 14:38
0
Merci
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 !
Commenter la réponse de monoski
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Dernière intervention
13 mai 2013
- 29 déc. 2010 à 16:20
0
Merci
Question le "Hello World" je le mets où du coup ?
Enfin ça sera une variable après :p

Bonne journée à tous =)
Commenter la réponse de monoski
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 30 déc. 2010 à 16:15
0
Merci
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)
Commenter la réponse de PetoleTeam
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Dernière intervention
13 mai 2013
- 30 déc. 2010 à 19:41
0
Merci
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 ! ^^
Commenter la réponse de monoski

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.