AJAX的状态消息


11

我正在通过标准的AJAX框架在drupal 7中进行AJAX调用。我的问题是,当状态消息由AJAX回调设置时,它只会丢失(或在页面的下一次重新加载时显示)。如何在AJAX回调完成运行后立即显示状态消息,而无需重新加载页面?是否有一个模块?

Answers:


13

您可以呈现状态消息,并将其作为另一个AJAX命令发送。

例如:

$commands = array();

// Add other commands

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

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

至少这是我面对此问题时所解决的方式。


你是救世主!!!:D非常感谢。
SGhosh,2015年

那里的theme('status_messages')有什么用?
alyssaeliyah 2015年

@Bebang Bakikang呈现状态消息,并返回带有当前状态消息的HTML代码。
sanzante 2015年

8

对于Drupal 8

$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

对于使用AJAX的Drupal 8表单,Tim Bozeman的回答起作用了,但是显示的消息没有样式。这对我有用:

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

return $response;

0

为了我

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

工作。其中#main-content是标准的,并且可能需要针对主题的实际消息位置进行自定义。(也许您必须将第二种方法更改为ajax_command_append()或其他方法)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.