So rendern Sie Systemnachrichten aus einem AJAX-Aufruf

10

Ich möchte eine Systemmeldung anzeigen, wenn ich meine Ajax-Anfrage zurückerhalten habe.

Die Ajax-Anfrage gibt die richtige Nachricht zurück. Ich kann es mit einem Alarm testen.

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

Die Erfolgs- oder Fehlermeldung wird nun als typische Joomla-Systemmeldung angezeigt. Aber der Joomla.renderMessagesAnruf zeigt keine Ergebnisse. Die Systemmeldung wird auf meiner Site nicht angezeigt.

Stimmt etwas nicht oder muss ich etwas mehr tun, um dies zum Laufen zu bringen?

Perino
quelle

Antworten:

6

Alle von @Bakual erwähnten Dinge sind korrekt, aber ich stelle fest, dass Sie nur das result.messagean übergeben alertund vorausgesetzt , dass [alert(message)][1]erwartet wird message, dass ein stringoder ein objectes in ein konvertiert werden kann. stringDies könnte das Problem sein.

Wenn result.messagees sich nur um eine Zeichenfolge handelt, müssen Sie sie in einen geeigneten Behälter einwickeln.

var jmsgs = [result.message];  // You can stack multiple messages of the same type
Joomla.renderMessages({'info': jmsgs });
Craig
quelle
das ist die lösung! Danke!
Perino
2

Die JavaScript-Funktion hängt vom Vorhandensein eines Containers mit der ID ab system-message-container. Einige Vorlagen haben diesen Container überhaupt nicht oder nur, wenn eine Meldung angezeigt werden soll. Fragen Sie zuerst bei Protostar nach, ob es dort funktioniert

Außerdem müssen Sie sicherstellen, dass Sie tatsächlich core.jsmit Ihrer Erweiterung geladen haben . Es ist nicht unbedingt geladen, vor allem nicht im Frontend. Seit Joomla 3.3 können Sie es mit verwenden JHtmlBehavior::core(), in früheren Versionen würden Sie verwenden JHtmlBehavior::framework().

Bakual
quelle