对Joomla 3的ajax调用返回内部服务器错误500

时间:2016-01-17 18:07:48

标签: php ajax joomla controller

我将自己的工作组件从Joomla 1.5移植到3.4。做了一些微不足道的变化,比如JComponent到JComponentLegacy,JView到JViewLegacy等等。但是,ajax调用现在返回Error 500,我找不到任何其他信息来解决它。

这是Php生成的视图:

<script type="text/javascript" src="//code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
(function ($) {
    $(document).on('click', 'input[type=submit]', function () {
        var value = $('input[name=data]').val();
        $.ajax({
            type: 'GET',
            url: 'index.php',
            data: 'option=com_mystatus&task=getstatus&data=' + value + '&format=raw&controller=ajax.raw',
            success: function (response) {
            $('.status').html(response.replace(/\"/g, ""));
        }
    });
    return false;
});
})(jQuery)
</script>
<form>
    <span class="contentheading">The Status</span>
    <br /><br />Product key:&nbsp;
    <input type="text" name="data" />
    <input type="submit" value="Display Status" />
    <br /><br />
</form>
<div class="status"></div>

这是ajaxraw.php控制器:

<?php
defined('_JEXEC') or die( 'Restricted access' );
jimport('joomla.application.component.controller');

class MyStatusControllerajaxraw extends JControllerLegacy
{
    function getstatus()
    {
        echo 'this is OK'; // this was simplified for test purposes
    }
}
?>

你能看到导致错误500的原因吗?如果没有,你能推荐如何调试这个问题吗?

2 个答案:

答案 0 :(得分:0)

将此用作数据字符串:

'option=com_mystatus&task=ajax.getstatus&data=' + value + '&format=raw'

具体来说,您需要调用ajax.getstatus任务,该任务将调用MyStatusControllerAjax控制器,其文件名应为ajax.raw.php,以指定该控制器专门用于原始格式。 Joomla 3.x不使用控制器查询字符串来路由到控制器,任务字符串是路由到特定控制器的主要方式。

答案 1 :(得分:0)

今天我注意到其他一些Joomla 3.4组件将海关控制器放入&#34;控制器&#34;子文件夹。所以,我做了同样的事情:创建了子文件夹,并在那里移动了ajax.raw.php文件。我还使用了Michael建议的URL:mysite.com/index.php?option=com_mystatus&task=ajax.getstatus&data=7&format=raw。瞧!现在一切正常!非常感谢迈克尔!