0

这是我的 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 文件中时,它工作正常并且类 BaseController 已加载,但是当该函数位于我的 index.php 文件中并且我进行 AJAX 调用时,我得到:

致命错误:第 13 行的 D:\xampp\htdocs\heliox\controllers\UserController.php 中找不到类“BaseController”。

4

2 回答 2

2

使用 ajax 调用,您可以controllers/UserController.php直接访问。在此文件中,您只有类声明,它们扩展了其他类。此时 PHP 解释器对其中注册的自动加载函数一无所知index.php,因此它将无法解析文件,因为它不知道BaseController或在哪里搜索它。

您需要的称为引导 - 将运行应用程序所需的所有代码(如注册自动加载器,包括库、加载配置文件等)放入一个文件中,该文件将包含在每个直接访问的文件中。

于 2013-06-11T21:34:54.697 回答
0

将其更改为:

$.ajax({
        type: 'POST',
        url: 'http://localhost/user/your_parameters',
于 2013-11-08T23:50:35.007 回答