it-swarm-vi.com

Cách hiển thị Thông báo hệ thống từ AJAX cuộc gọi

Tôi muốn hiển thị một thông báo hệ thống khi tôi nhận được 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.renderMessages 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?

10
Perino

Tất cả những điều được @Bakual đề cập là chính xác nhưng tôi nhận thấy rằng bạn chỉ chuyển result.message Cho alert và cho rằng [alert(message)][1] mong đợi message a string hoặc object nó có thể chuyển đổi thành string đây có thể là vấn đề.

Nếu result.message Chỉ 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 });
5
Craig

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.js Vớ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().

2
Bakual