2013-04-27 142 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