it-swarm-eu.dev

Come eseguire il rendering del messaggio di sistema da AJAX

Vorrei visualizzare un messaggio di sistema quando ho ricevuto la mia richiesta Ajax.

La richiesta Ajax restituisce il messaggio giusto. Posso provarlo con un avviso.

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

Ora mostrerà il messaggio di successo o di errore come un tipico messaggio di sistema Joomla. Ma il Joomla.renderMessages chiama, non mostra alcun risultato. Il messaggio di sistema non verrà visualizzato sul mio sito.

C'è qualcosa di sbagliato o devo fare qualcosa di più per farlo funzionare?

10
Perino

Tutte le cose menzionate da @Bakual sono corrette ma noto che stai passando il result.message A alert e dato che [alert(message)][1] si aspetta che message sia un string o un object può essere convertito in string questo potrebbe essere il problema.

Se result.message È solo una stringa, dovrai avvolgerla in un contenitore appropriato, qualcosa del genere:

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

La funzione JavaScript dipende dalla presenza di un contenitore con l'id system-message-container. Alcuni modelli non hanno affatto questo contenitore o solo se è presente un messaggio da mostrare. Quindi prima controlla con Protostar e vedi se funziona lì

Inoltre, devi assicurarti di aver effettivamente caricato core.js Con la tua estensione. Non è necessario caricato, soprattutto non in frontend. Da Joomla 3.3 puoi caricarlo usando JHtmlBehavior::core(), nella versione precedente avresti usato JHtmlBehavior::framework().

2
Bakual