致命错误:在joomla 2.5中调用未定义的方法JDocumentRaw :: addCustomTag()

时间:2012-06-13 02:10:49

标签: joomla joomla1.7

我有一个示例代码: 在default.php中:

<?php
JHTML::_('behavior.mootools'); /* to load mootools */
$ajax = "
/* <![CDATA[ */
window.addEvent('domready', function() {
    $('start_ajax').addEvent('click', function(e) {
        e.stop(); 
        var url = 'index.php?option=com_xxx&controller=xxx&task=updateAjax&format=raw';
        var x = new Request({
            url: url, 
            method: 'post', 
            onSuccess: function(responseText){
                document.getElementById('ajax_container').innerHTML = responseText;
            }
        }).send(); 
    });
})
/* ]]> */
" ;
$doc = &JFactory::getDocument();
$doc->addScriptDeclaration($ajax);
?>

和default.php的控制器我使用代码:

function updateAjax() {
   echo date('Y-m-d D H:i:s');
}

当我运行代码时出现错误undefined method JDocumentRaw::addCustomTag(),如何解决?

2 个答案:

答案 0 :(得分:3)

我觉得你在使用ajax调用jquery时错了:

$document =& JFactory::getDocument();
$document->addCustomTag("call jquery library or script other");

你试试:

if($document->getType() != 'raw'){
   $document->addCustomTag("call jquery library or script other"); 
}

答案 1 :(得分:3)

这是因为您将“format”参数设置为“raw”,通常是将&amp; format = raw添加到用于访问组件的URL的末尾。这会触发Joomla使用JDocumentRaw渲染器而不是标准JDocument渲染器。您可以通过选择以下之一来解决此问题(以较合适者为准):

  • 从链接页面的URL中删除“format = raw”,并使用备用方法使页面按预期显示,例如将tmpl = component或template = system添加到URL

  • 添加检查“format”是否设置为raw,在这种情况下不要添加脚本

  • 使用您自己的JDocumentRaw类扩展JDocumentRaw类,以实现您自己添加脚本的方法,并使用format = yourRendererName而不是format = raw