Pesan status dengan AJAX


11

Saya membuat panggilan AJAX di drupal 7 melalui Kerangka AJAX standar. Masalah saya adalah bahwa ketika pesan status diatur oleh panggilan balik AJAX, pesan itu hilang begitu saja (atau ditampilkan pada pemuatan ulang halaman berikutnya). Bagaimana saya bisa menampilkan pesan status tepat setelah panggilan balik AJAX selesai berjalan, tanpa memuat ulang halaman? Apakah ada modul untuk itu?

Jawaban:


13

Anda dapat merender pesan status dan mengirimkannya sebagai perintah AJAX yang lebih baik.

Sebagai contoh:

$commands = array();

// Add other commands

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

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

Setidaknya ini adalah cara saya memecahkan masalah ini ketika saya menghadapinya.


You Are A Savior !!! : D Terima kasih banyak.
SGhosh

Apa gunanya tema ('status_messages') di sana?
aegc

@Bebang Bakikang merender pesan status, mengembalikan kode HTML dengan pesan status saat ini.
sanzante

8

Untuk Drupal 8 itu

$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

Untuk formulir Drupal 8 dengan AJAX, jawaban oleh Tim Bozeman berfungsi, tetapi pesan muncul tanpa gaya. Inilah yang bekerja untuk saya:

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

return $response;

0

untuk saya

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

bekerja. di mana # konten utama adalah standar, dan mungkin perlu disesuaikan untuk posisi pesan akut tema Anda. (mungkin Anda harus mengubah metode kedua menjadi ajax_command_append () atau yang lain)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.