我将自己的工作组件从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:
<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的原因吗?如果没有,你能推荐如何调试这个问题吗?
答案 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。瞧!现在一切正常!非常感谢迈克尔!