ข้อความสถานะด้วย AJAX


11

ฉันกำลังโทร AJAX ใน drupal 7 ผ่าน AJAX Framework มาตรฐาน ปัญหาของฉันคือเมื่อข้อความสถานะถูกตั้งค่าโดยการโทรกลับ AJAX มันจะหายไปเพียงแค่ (หรือแสดงที่โหลดหน้าถัดไป) ฉันจะแสดงข้อความสถานะได้ทันทีหลังจากที่ AJAX โทรกลับทำงานเสร็จแล้วโดยไม่ต้องโหลดหน้าซ้ำ มีโมดูลสำหรับสิ่งนั้นหรือไม่?

คำตอบ:


13

คุณสามารถแสดงข้อความสถานะและส่งเป็นคำสั่ง anohter 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

การใช้ชุดรูปแบบคืออะไร ('status_messages') ในนั้น?
alyssaeliyah

@Bebang Bakikang แสดงข้อความสถานะส่งคืนโค้ด HTML ด้วยข้อความสถานะปัจจุบัน
sanzante

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

สำหรับรูปแบบ Drupal 8 ด้วย AJAX ตอบโดย 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 ()หรือวิธีอื่น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.