相当于 JavaScript 中 PHP 的 dirname(__FILE__)?



正如我在标题中已经提到的那样,我正在寻找一个可以获得相同结果的JS功能,就像我使用此PHP代码一样:

dirname(dirname(__FILE__))

预先感谢!

我认为这是不可能的,因为php dirname在本地计算机上的apache服务器上操作。它可以访问文件系统。但是JavaScript在无法使用文件系统操作的浏览器层上操作。我认为您应该使用Ajax和Proccess结果。我认为这是最适合您的解决方案。

我需要一个解决方案来编写这样的代码:

$("#div").load(ROOT_URL + "my/path/to/script.php");

解决方案:一个PHP脚本生成了所有需要的JS文件的一个JS文件,并将root_url添加到生成的文件的顶部:

$js = 'ROOT_URL = "' . ROOT_URL . '"; ' . $js;
file_put_contents("file.js", $js);

现在,我还可以在JS代码中使用root_url(在PHP配置文件中设置)。我希望我能提供帮助。

您可以将php输出脚本输出。是的,是的,您可能无法制作PHP Process JS文件(除非您完全控制服务器)。但这没关系。只需确保MIME类型正确,无论是在标题php返回和脚本标签中,都可以。这样,您可以让PHP插入所需的任何值,包括其自己的路径。

script.php:

header("Content-type: text/javascript");
echo 'var myvar = '.$something;
//where $something can be $_SERVER['REQUEST_URI'], __FILE__ or whatever you need.
//You could even use information from session variables, or query the database.
//In fact, this way you can have GET parameters in your javascript.
//Make sure you are not creating a vulnerability with the exposed information.
//Then put the rest of the script as usual. You could even include it*.

*:包括

在html中:

<script type="text/javascript" src="script.php"></script>

是的,我知道我正在重复MIME类型,这样做以使浏览器兼容最大化。

在浏览器JavaScript中没有__FILE__的类似物;该代码无法直接访问加载其加载的URL。但是,有了某些假设,您可以像在此处的答案中弄清楚。

拥有脚本的URL(我假设在下面称为scriptURL的变量中)后,您就可以设置寻找祖父母URL。对于URL,这可能会变得很棘手,因此,让JavaScript解析URL的URL位为您的URL并获得pathName组件之前,可能是最安全的,然后才能开始使用string-munging:

var a = document.createElement('a')
a.href = scriptURL
var scriptPath = a.pathname

那是不幸的是,要进行字符串操纵;这是一个有点笨拙的解决方案:

var components = scriptPath.split(///)
while (components.length > 0 && !components[components.length-1])
    components.length -= 1;
var twoDirsUp = components.slice(0,components.length-2).join('/')

然后,您可以使用锚元元素技巧反向转换为完整的URL:

a.pathname = twoDirsUp;
var grandParentUrl = a.href

为什么不从绝对URL加载您想要的东西?

如果您的代码块INSE:/my/script/to/load.js浏览器将加载正确的文件,如果您在yoursite.com中或任何类似yoursite.com/a/b/c/d/e/f

之类的内容

有点偏离主题,但是如果您只想获得JavaScript的dirname($_SERVER['REQUEST_URI']),则可以做

window.location.href.substr(0, window.location.href.length - window.location.href.split('/').pop().length)

我使用类似的东西从javascript中的路径

中解放
 var __DIR__ = window.location.pathname.match('(.*/).*')[1] + 'NameOfThisFolder';

第一个

window.location.pathname.match('(.*/).*')[1]

返回没有文件名或其他内容的当前路径。

rootFolder/folder1/folder2/

然后,我添加了此文件夹的名称('nameOfTholder')。

以这种方式,我可以从当前页面中的Ajax请求从Ajax请求依次调用的页面中,而不必担心路径

相关内容

  • 没有找到相关文章

最新更新