我需要在ajax加载的PHP页面中再次包含PHP脚本吗?

6

我有一个ajax调用到一个php页面,其中我使用GET传递一个ID。

<script>
$("#oid").change(function(){
    var oid = $(this).val();
    alert(oid);
    $.ajax({
        type: "GET", 
        url: "tabela_reservas.php",
        data: "oid="+oid,
        success: function(html) {
            $("#tabela_reservas").html(html);
        }
    });
});
</script>

除了PHP报错外,它能正常工作:
致命错误:在C:\xampp\htdocs\kwagenda\tabela_reservas.php的第20行找不到类'Reserva'
如果我在"tabela_reservas.php"中包含我的类文件,它就能正常工作。但是这些类文件已经在我的"index.php"中加载/包含,我从那里调用这个ajax页面。
我的问题是:我需要在"tabela_reservas.php"中再次包含我的php类文件吗?还是有另一种方法可以做到这一点?
我问这个问题是因为,在我看来,这似乎不是一个非常优雅的解决方案,并且它看起来像是一个超额开销,因为我将在我的页面上加载两次相同的东西。
这样做是正确的吗?还是有其他方法可以做到这一点?
谢谢!

尝试直接访问您的tabela_reservas.php,您也会收到相同的错误。因此,在使用AJAX调用之前,您必须使页面正常工作。 - Termis
4个回答

4
当您向服务器发出ajax请求时,这是一个全新的请求,就像导航到另一个页面一样。
因此,是的,您需要再次包含所有内容。
您应该研究类的自动加载,以获得更优雅的解决方案来包含类。

3

您需要在 tabela_reservas.php 中再次包含所有的类文件,因为 index.phptabela_reservas.php 之间没有关联。

所有的ajax请求都是全新的,与当前页面没有任何关系。请将它们视为一个新页面被调用 :)


3
一个AJAX调用意味着:您正在调用一个新页面。无论调用来自哪里,它就像在后台调用新页面一样。因此,它会被重新解析,就像浏览器访问它一样。所以是的:您必须在通过AJAX调用的任何脚本中包含所有必需的脚本。

0
如果您在另一个脚本中使用此类,则需要拥有该类的另一个实例。另一种方法是使用PHP的自动加载/魔术加载(参见:PHP:自动加载)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接