2013-04-27 140 views
0

没有AJAX我将输出错误,像这样(通常在控制器)用户:的Joomla组件

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

你应该可以用你的错误信息使用Javascript来填充id为system-message-container的元素。但是,如果它使用覆盖,它可能会失败,具体取决于模板。

如果您确实需要类似于JError的消息,则需要重新加载页面并在服务器端生成它。但AJAX的意义在于您不会重新加载页面:-)

另请注意,JError已被取消。改为使用$app->enqueueMessage('message', 'type')

+0

感谢您的提示。 'system-message-container'很好理解!我决定在成功时使用JSON错误消息。不是最漂亮的,但我不认为真的有一种优雅的方式。 – Tom 2013-04-28 15:53:18