【发布时间】:2016-01-17 18:07:47
【问题描述】:
我将自己的工作组件从 Joomla 1.5 移植到 3.4。进行了一些微不足道的更改,例如 JComponent 到 JComponentLegacy,JView 到 JViewLegacy 等。但是,ajax 调用现在返回错误 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 的原因吗?如果没有,您能否推荐如何调试此问题?
【问题讨论】:
-
console.log(value);?浏览器通过访问index.php?option=com_mystatus&task=getstatus&data=5&format=raw&controller=ajax.raw会返回什么(例如数据5 的样本值)?请问是什么让您选择 GET 提交表单? -
是的,我试过console.log,也试过在php.ini中打开调试,但似乎连getstatus()函数都没有命中。我怀疑 jimport 或 smth else 与 Joomla 3 不兼容,因为它适用于 1.5。
-
浏览器返回:View not found [name, type, prefix]: mystatus, raw, mystatusView
-
但它存在:类 MyStatusViewMyStatus 扩展了文件 components/com_mystatus/views/mystatus/view.html.php 中的 JViewLegacy。是否有可能因为 Joomla 1.5 和 3.4 更改了组件文件夹结构而找不到该文件?
标签: php ajax joomla controller