web-dev-qa-db-fra.com

Comment rendre un message système de AJAX call

Je souhaite afficher un message système lorsque je reçois ma demande ajax.

La demande ajax renvoie le bon message. Je peux le tester avec une alerte.

alert(result.message);
Joomla.renderMessages(result.message);

Il affichera maintenant le message de réussite ou d'erreur en tant que message système Joomla typique. Mais le Joomla.renderMessages appel, ne montre aucun résultat. Le message système n'apparaîtra pas sur mon site.

Y at-il quelque chose qui cloche ou dois-je faire quelque chose de plus pour que cela fonctionne?

10
Perino

Toutes les choses mentionnées par @Bakual sont correctes, mais je remarque que vous ne faites que passer le result.message À alert et que [alert(message)][1] s'attend à ce que message soit un string ou un object peut être converti en un string cela pourrait être le problème.

Si result.message Est juste une chaîne, vous devrez alors l'envelopper dans un conteneur approprié, quelque chose comme ceci:

var jmsgs = [result.message];  // You can stack multiple messages of the same type
Joomla.renderMessages({'info': jmsgs });
5
Craig

La fonction JavaScript dépend de la présence d'un conteneur avec l'id system-message-container. Certains modèles n'ont pas du tout ce conteneur, ou seulement s'il y a un message à afficher. Alors, vérifiez d'abord avec Protostar et voyez si cela fonctionne là-bas

De plus, vous devez vous assurer que vous avez bien chargé core.js Avec votre extension. Ce n'est pas nécessaire chargé, surtout pas en front-end. Depuis Joomla 3.3, vous pouvez le charger avec JHtmlBehavior::core(), dans les versions antérieures, vous utilisiez JHtmlBehavior::framework().

2
Bakual