[英]Cannot get obj property to show up on html page when called (from json php file) in ajax
[英]Get directory of HTML page in PHP file that is called by the HTML page
我有一个使用php文件作为脚本文件的HTML页面,如下所示:
<!doctype html>
<html lang="en">
<head>
...
<script src="../script.js.php"></script>
</head>
...
script.js.php文件具有以下内容:
<?php
header('Content-type:text/javascript; charset=utf-8');
$someVar = [];
foreach (glob('*.txt') as $filename) {
$someVar[] = $filename;
}
?>
... here starts the javascript code
可以看出,script.js.php位于HTML文件的父文件夹中,因此发生的情况是PHP glob()函数看到了父文件夹,而不是HTML页面所在的文件夹,因此它将列出所有文本该文件夹中的文件。
有没有办法修改此代码,以便可以将$ someVar与HTML文件文件夹中的文本文件列表一起使用?
谢谢。
编辑:我认为需要澄清。 使用相同的PHP / Javascript文件,位于其他文件夹中的其他一些HTML文件(位于不同文件夹中的不同HTML文件)将使用相同的PHP文件。 这就是问题所在,PHP文件在理想情况下应该能够知道其“调用者”的目录,即使用该文件的HTML页面。 如果我将解决方案硬编码到某个HTML文件的PHP文件中,则该PHP文件将不再对其他HTML文件有用。 然后,我可以简单地在每个HTML文件的文件夹内使用PHP文件,但随后我将同一文件重复多次,这对于维护目的来说是非常糟糕的。
编辑2:我可能已经找到解决问题的方法。 我的HTML文件变为:
...
<script src="script.js.php"></script>
...
script.js.php变为:
<?php
header('Content-type:text/javascript; charset=utf-8');
$curDir = getcwd();
include('../newfile.js.php');
echo file_get_contents("../rest.of.js.code.js");
?>
和newfile.js.php是:
<?php
$someVar = [];
foreach (glob($curDir . '/*.txt') as $filename) {
$someVar[] = basename($filename);
}
echo "var someVar = " . json_encode($someVar) . ";\r\n";
?>
rest.of.js.code.js现在将包含script.js.php中以前存在的Javascript代码。 该文件和newfile.js.php保留在父目录中; script.js.php将重复存在(并根据需要调整newfile.js.php的路径)在任何所需的HTML目录中。
您可以使用dirname :
$parentDir = dirname(dirname(__FILE__));
__FILE__
是对当前PHP脚本( script.js.php
)的引用。 因此,您要获取文件的父目录,然后获取该目录的父目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.