如果没有AJAX,我会像这样输出错误(通常在控制器中):
JError::raiseWarning( 100, JText::_('COM_EXAMPLE_EXCEED_LIMIT') ); // or: jexit(JText::_('COM_EXAMPLE_EXCEED_LIMIT'));
//then redirect them back to component
JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_example'));
使用AJAX你不能这样做,因为它只是无法解析你发回的任何数据(在我的情况下是json)
jQuery.ajax({
url: "index.php?option=com_example&task=add",
dataType: 'json',
data: dataString,
success: function(data){
//do stuff
}
});
理想情况下,我想使用JError::raiseWarning
,因为它很漂亮。但不确定这是可能的,因为那是服务器端,响应即将到来客户端?有什么想法吗?
答案 0 :(得分:0)
您应该能够使用Javascript使用您的错误消息填充标识为system-message-container
的元素。但是,如果模板使用覆盖,它可能会失败,具体取决于模板。
如果您确实需要来自JError的消息,则需要重新加载页面并在服务器端生成它。但AJAX的重点是你不重新加载页面: - )
另请注意,JError被贬低了。请改用$app->enqueueMessage('message', 'type')
。