Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新加载php后未找到类_Php_Jquery - Fatal编程技术网

重新加载php后未找到类

重新加载php后未找到类,php,jquery,Php,Jquery,我肯定以前有人问过这个问题,但我找不到相关的问题,也许我使用了错误的搜索词 在我的index.php中,我包含了类_lib.php,它包含我的数据库类。然后我将包含一个php文件,该文件显示从数据库收集的一些信息,并且在初始加载时运行良好。最后,我有一个按钮刷新包含的php文件,再次使用jQuery to.load()刷新它,替换最初的html/脚本 在第二次加载时,我得到: 致命错误:未捕获错误:在路径/to/module.php堆栈跟踪中找不到类“Database”:#0{main}在第33

我肯定以前有人问过这个问题,但我找不到相关的问题,也许我使用了错误的搜索词

在我的index.php中,我包含了类_lib.php,它包含我的数据库类。然后我将包含一个php文件,该文件显示从数据库收集的一些信息,并且在初始加载时运行良好。最后,我有一个按钮刷新包含的php文件,再次使用jQuery to.load()刷新它,替换最初的html/脚本

在第二次加载时,我得到:

致命错误:未捕获错误:在路径/to/module.php堆栈跟踪中找不到类“Database”:#0{main}在第33行的路径/to/module.php中抛出

显然,第33行是我第一次在module.php中调用数据库类

 $database = new Database();
$database = new Database();
//run queries, display results, the usual
<div id="refreshButton">Refresh This Module</div>

<script>
$('#refreshButton').on('click', function(){
    $('#module').load('module.php');
}
</script>
愚蠢的是,我再次尝试在module.php中包含类_lib.php,结果是:

致命错误:无法声明类lead,因为该名称已在path/to/class_lib.php中使用

class Database{
    //private vars
    //public functions, __construct(), query(), bind(), execute(), others
}
我读了一些关于自动加载器的书,我曾经读过一些关于require_的书,包括______________________________。这是我的(简化)代码

inside index.php

<html><head>
<?php include('class_lib.php') ?>
</head><body>
<div id="module">
    <?php include('module.php') ?> //Include the module, displays fine on first run
</div>
</body></html>
module.php

 $database = new Database();
$database = new Database();
//run queries, display results, the usual
<div id="refreshButton">Refresh This Module</div>

<script>
$('#refreshButton').on('click', function(){
    $('#module').load('module.php');
}
</script>
$database=newdatabase();
//运行查询,显示结果,通常
刷新此模块
$(“#刷新按钮”)。在('click',function()上{
$('#module').load('module.php');
}
因此,如果我不能两次包含数据库类,并且在第二次加载时找不到该类,我该如何使其工作?

在module.php文件中放置
include('class_lib.php')
,或者
在两个位置调用use
include\u('class\u lib.php')
,如果已经包含了它,就不会再调用它。

首先,为什么要再次加载?其次,当从Ajax加载时,你不能告诉php不要执行数据库调用吗?模块显示一个上载文件的列表,并有一个“抽屉”排序以拖放新文件。当您要退出抽屉并返回列表时,单击“刷新”按钮。如果已上载新文件,则需要刷新列表而不刷新页面,因此使用.load()的原因是。第二个数据库调用是必需的,否则它将无法获得更新的列表。因此,当您单击module.php并将其作为ajax调用加载时,您就遇到了问题?在看到本文之前几秒钟,它就开始工作了。我在index.php中使用了require_一次,在module.php文件中再次使用require_。此外,我的“简化”的代码是,Class_lib.php位于不同的文件夹层次结构中,因此我必须使用dirname(FILE)来获得所需文件的正确路径。无论哪种方式,它现在都可以工作了,感谢您的帮助。