2

我有一个示例代码:在 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(),如何修复它?

4

2 回答 2

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"); 
}
于 2012-06-13T02:20:29.233 回答
3

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

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

  • 添加检查“格式”是否设置为原始,在这种情况下根本不添加脚本

  • 用你自己的扩展 JDocumentRaw 类,它实现你自己的方法来添加脚本并使用 format=yourRendererName 而不是 format=raw
于 2012-06-13T14:25:12.060 回答