PHP自动加载在AJAX调用后找不到类文件
我正在使用PHP和一些JQuery构建一个非常简单的商店应用程序。 在第一次加载时,应用程序加载正常,但如果对同一脚本执行GET请求调用,则会出现错误:PHP自动加载在AJAX调用后找不到类文件,php,jquery,ajax,Php,Jquery,Ajax,我正在使用PHP和一些JQuery构建一个非常简单的商店应用程序。 在第一次加载时,应用程序加载正常,但如果对同一脚本执行GET请求调用,则会出现错误: Warning: require(app\controllers\Wallet.php): failed to open stream: No such file or directory in C:\xampp\htdocs\abc\app\core\autoload.php on line 5 这是我的index.php文件(省略引导和J
Warning: require(app\controllers\Wallet.php): failed to open stream: No such file or directory in C:\xampp\htdocs\abc\app\core\autoload.php on line 5
这是我的index.php
文件(省略引导和Jquery链接):
在Autoload.php
中自动加载非常简单
<?php
spl_autoload_register(function($className)
{
require $className.'.php';
});
似乎没有任何变化,但代码中断。必须重构
autoload.php
添加绝对路径才能使其正常工作:
<?php
spl_autoload_register(function($className)
{
$file = $_SERVER['DOCUMENT_ROOT'].PROJECT_SUBFOLDER.$className.'.php';
if(file_exists($file))
{
require_once $file;
}
else {
echo 'File:'.$file.' not found';
}
});
?>
您在autoload.php和app/core/app.php中缺少?>
。@CoderCharmander,很遗憾,修复该问题没有帮助。关键是,在第一次加载时它可以工作,而在AJAX调用时它失败了。其他PHP文件在app/controllers中吗?(我知道这是一个愚蠢的建议)@CoderCharmander是的,当然。所有必要的文件都在那里。它们确实包含在第一次加载中。我认为这与相对路径有关。
<?php
spl_autoload_register(function($className)
{
require $className.'.php';
});
$(function() {
$('#app').on("click","#addtocart", function (e) {
e.preventDefault();
productId = $(e.target).data("product-id")
$.ajax({
type: 'get',
url: './app/core/App.php',
data: {
'addtocart': productId,
},
success: results => {
$('#app').html(results);
},
error: () => {
alert('Load error');
}
});
console.log(productId);
});
})
<?php
spl_autoload_register(function($className)
{
$file = $_SERVER['DOCUMENT_ROOT'].PROJECT_SUBFOLDER.$className.'.php';
if(file_exists($file))
{
require_once $file;
}
else {
echo 'File:'.$file.' not found';
}
});
?>