Cách kết xuất Tin nhắn hệ thống từ cuộc gọi AJAX


10

Tôi muốn hiển thị một thông báo hệ thống khi tôi nhận lại yêu cầu ajax của mình.

Yêu cầu ajax trả về đúng thông điệp. Tôi có thể kiểm tra nó với một cảnh báo.

alert(result.message);
Joomla.renderMessages(result.message);

Bây giờ nó sẽ hiển thị thông báo thành công hoặc lỗi dưới dạng Thông báo hệ thống Joomla điển hình. Nhưng Joomla.renderMessagescuộc gọi, không hiển thị bất kỳ kết quả. Thông báo hệ thống sẽ không xuất hiện trên trang web của tôi.

Có bất cứ điều gì sai hoặc tôi phải làm một cái gì đó nhiều hơn để có được điều này để chạy?

Câu trả lời:


6

Tất cả những điều được đề cập bởi @Bakual là chính xác nhưng tôi nhận thấy rằng bạn chỉ là đi qua các result.messageđến alertvà cho rằng [alert(message)][1]hy vọng messagetrở thành một stringhoặc một objectnó có thể chuyển đổi sang một stringnày có thể là vấn đề.

Nếu result.messagechỉ là một chuỗi, thì bạn sẽ cần phải bọc nó trong một thùng chứa thích hợp, đại loại như thế này:

var jmsgs = [result.message];  // You can stack multiple messages of the same type
Joomla.renderMessages({'info': jmsgs });

đó là giải pháp! Cám ơn!
Perino

2

Hàm JavaScript phụ thuộc vào sự hiện diện của một thùng chứa với id system-message-container. Một số mẫu hoàn toàn không có thùng chứa này hoặc chỉ khi có thông báo hiển thị. Vì vậy, trước tiên hãy kiểm tra với Protostar và xem nếu nó hoạt động ở đó

Ngoài ra, bạn cần đảm bảo rằng bạn thực sự đã tải core.jsvới tiện ích mở rộng của mình. Nó không cần thiết được tải, đặc biệt là không ở frontend. Vì Joomla 3.3 bạn có thể tải nó bằng cách sử dụng JHtmlBehavior::core(), trong phiên bản trước bạn sẽ sử dụng JHtmlBehavior::framework().

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.