0

如果没有 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它,因为它又好又漂亮。但不确定这是可能的,因为那是服务器端并且响应来自客户端?有任何想法吗?

4

1 回答 1

0

您应该能够system-message-container使用 Javascript 使用带有错误消息的 id 填充元素。但是,如果它使用覆盖,它可能会失败,具体取决于模板。

如果您确实需要来自 JError 的消息,则需要重新加载页面并在服务器端生成它。但是 AJAX 的重点是您无需重新加载页面 :-)

另请注意,不推荐使用 JError。改为使用$app->enqueueMessage('message', 'type')

于 2013-04-27T19:57:41.193 回答