这是我的index.php文件:
function Loader($class)
{
$base=$_SERVER["DOCUMENT_ROOT"];
if (file_exists($base.'/app/'.$class.'.php')) {
include($base.'/app/'.$class.'.php');
return true;
}
return false;
}
spl_autoload_register('Loader');
?>
<html>
<head>
</head>
<body>
<div id="container">
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>
在我的main.js文件中,我执行AJAX调用:
$.ajax({
type: 'POST',
url: 'controllers/UserController.php',
dataType: "json",
data: {
model: model,
method: method
},
success: function(result) {
if (typeof(template) != 'undefined'){
$.get('http://localhost/heliox/templates/'+template, function(data) {
$(target).empty();
$(target).html(_.template(data,{data:result}));
});
}
}
});
在UserController.php文件中,我有:
Class UserController extends BaseController
{
public function test()
{
echo "test";
}
}
$UserController = new UserController;
当我在UserController文件中放置我的“Loader”函数时它工作正常并且加载了类BaseController,但是当函数在我的index.php文件中并且我执行AJAX调用时我得到:
致命错误:找不到类'BaseController' 第13行的D:\ xampp \ htdocs \ heliox \ controllers \ UserController.php。
答案 0 :(得分:2)
通过ajax调用,您可以直接访问controllers/UserController.php
。在这个文件中,你只有类声明,它扩展了其他类。此时PHP解释器对index.php
及其中注册的自动加载功能一无所知,因此它无法解析文件,因为它对BaseController
一无所知或在哪里搜索它。
你需要的是bootstraping - 将运行你的应用程序所必需的所有代码(比如注册自动加载器,包括库,加载配置文件等)放到一个文件中,这将直接访问每个文件。
答案 1 :(得分:0)
将其更改为:
$.ajax({
type: 'POST',
url: 'http://localhost/user/your_parameters',