10

I'm making an AJAX call in drupal 7 via the standard AJAX Framework. My problem is that when a status message is set by the AJAX callback, it is simply lost (or displayed at the next reload of the page). How can I display the status messages right after the AJAX callback has finished running, without reloading the page? Is there a module for that?

13

You can render the status messages and send them as anohter AJAX command.

For example:

$commands = array();

// Add other commands

$commands[] = ajax_command_prepend('div#ajax-status-messages-wrapper', theme('status_messages'));

return array('#type' => 'ajax', '#commands' => $commands);

At least this is the way I solved this problem when I faced it.

  • You Are A Saviour!!! :D Thankyou so so much. – SGhosh Jan 24 '15 at 15:52
  • What is the use of theme('status_messages') in there? – Alyssa Gono Jul 27 '15 at 1:38
  • @Bebang Bakikang render the status messages, returning HTML code with the current status messages. – sanzante Nov 10 '15 at 15:16
7

For Drupal 8 it's

$response = new AjaxResponse();    
$status_messages = array('#type' => 'status_messages');
$messages = \Drupal::service('renderer')->renderRoot($status_messages);
if (!empty($messages)) {
  $response->addCommand(new PrependCommand('.your_selector', $messages));
}

return $response;
3

For Dropal 8 form with AJAX, answer by Tim Bozeman worked, but messages were showed up with no styling. This is what worked for me:

$response = new AjaxResponse();
drupal_set_message($action);
$form['messages']['status'] = [
  '#type' => 'status_messages',
];
$response->addCommand(new InsertCommand(null, $form['messages']));

return $response;
0

for me

$commands[] = ajax_command_remove('div.messages');
$commands[] = ajax_command_after('#main-content', theme('status_messages'));

worked. where #main-content is standard, and maybe needs to be customized for your theme's acutal messages position. (maybe you have to change the second method to ajax_command_append() or another)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.