jQuery load()加载php页面时无法找到txt文件的问题求解
问题根因
- 路径上下文差异:PHP中相对路径的解析基于当前执行的入口文件位置,而非代码所在文件的位置。首次引入时入口文件在项目根目录,
data/employees.txt指向根目录下的文件可正常读取;通过jQuery直接请求include/searchedResult.php时,入口文件变成了include目录下的searchedResult.php,此时会尝试读取include/data/employees.txt,路径不存在触发报错。 - 路径拼写错误:你代码中jQuery load请求的路径写为
include/searchResu;t.php,中间多了多余的分号,需先修正为include/searchedResult.php。
解决方法
方法1(最简适配)
修改searchedResult.php里的文件读取代码,用PHP内置常量__DIR__拼接绝对路径,不受入口文件位置影响:
把原有代码
$array = file("data/employees.txt");
替换为
$array = file(__DIR__ . "/../data/employees.txt");
__DIR__代表searchedResult.php所在的include目录,/../会返回上级根目录,即可正确指向根目录下的data文件夹。
方法2(全局规范)
如果项目有统一公共入口文件,可在根目录的公共配置中定义全局根路径常量,后续所有文件路径都基于常量拼接,维护更便捷:
- 在根目录公共配置文件中添加:
define('PROJECT_ROOT', realpath(dirname(__FILE__)));
- 把searchedResult.php中的读取代码改为:
$array = file(PROJECT_ROOT . "/data/employees.txt");
内容的提问来源于stack exchange,提问作者Voon Tao Tan
相关产品推荐
相关产品推荐

