Я считаю, что это более или менее дубликат этого вопроса , который вы задали себе, только сформулировали немного точнее. Мой ответ оттуда все еще относится к этому ответу.
В принципе, нет никакой причины проходить через все обручи AJAX, чтобы использовать drupal_set_message, это только замедлит процесс. Использование drupal_set_meesage не заставит модуль messagefx реагировать на вставленный вами HTML, потому что он был сгенерирован из drupal_set_message. Будет намного быстрее и проще генерировать и вводить html непосредственно в ваш javascript без каких-либо вызовов ajax, а затем добавить fx, вызвав соответствующую функцию js.
Edit:
То, что вы спрашиваете, невозможно, вы не можете заставить drupal показывать сообщения от drupal_set_message () с эффектами на лету по двум причинам:
- Drupal написан на PHP, поэтому единственный способ получить новый контент на странице с помощью PHP - это перезагрузить страницу или загрузить новую.
- Messagefx работает, выполняя простой js, который нацелен на сообщения, которые были созданы при загрузке страницы, поэтому даже если бы можно было заставить drupal обновить страницу, печатая новые сообщения, они не получили бы эффектов от messagefx .
Вы могли бы достичь своей цели, как я объяснил, я, вероятно, немного изменил бы ее, чтобы соответствовать и оптимизировать то, что вы написали здесь. Однако вы не можете выводить новые сообщения на экран, не выполняя что-то вроде функций jQuery append (), prepend (). Поэтому я боюсь, что вы должны решить поступить так, как я описал, или подобным, или не делать это вообще.
Также следует учитывать, что если вы создаете / вводите html через js или через drupal, это не имеет большого значения для конечного результата: страница, написанная на html.