如何获取已执行JavaScript文件目录及Ajax请求目标PHP文件目录?
解决两个路径获取问题:PHP文件所在目录与当前JS文件目录
嘿,在WordPress主题开发里碰到这种路径问题太正常了,我给你分两个场景详细说解决方案:
一、获取Ajax请求用的PHP文件所在目录
因为你的PHP文件放在/httpdocs/wp-content/themes/themeName/users下,最规范且安全的方式是利用WordPress的脚本本地化功能,把PHP端的路径传递到JavaScript里——硬编码路径很容易因为主题目录名变化、站点迁移出问题,用官方方法更稳妥。
实现步骤:
- 在你的主题
functions.php里注册并本地化你的JS脚本:
function enqueue_user_scripts() { // 注册你的JS文件 wp_enqueue_script( 'user-custom-script', get_template_directory_uri() . '/users/js/你的脚本文件名.js', array('jquery'), '1.0', true ); // 传递PHP目录路径到JS wp_localize_script( 'user-custom-script', 'ThemePaths', array( 'usersDir' => get_template_directory_uri() . '/users/' ) ); } add_action( 'wp_enqueue_scripts', 'enqueue_user_scripts' );
- 然后在你的JS文件里,直接用
ThemePaths.usersDir就能拿到PHP文件所在的目录路径,发起Ajax请求时直接拼接就行:
jQuery.ajax({ url: ThemePaths.usersDir + '你的PHP文件名.php', method: 'POST', // 其他请求参数... });
这种方式完全贴合WordPress开发规范,不管主题目录怎么变,路径都能自动适配。
二、获取当前执行的JavaScript文件自身的目录
要拿到当前JS文件所在的/users/js目录,可以通过读取当前脚本标签的src属性来解析路径,下面给你两种实用实现方式:
方式1:原生JavaScript实现
function getCurrentScriptDir() { // 获取当前执行的脚本标签(页面最后加载的脚本就是当前脚本) const scripts = document.getElementsByTagName('script'); const currentScript = scripts[scripts.length - 1]; // 截取路径中的目录部分 const scriptSrc = currentScript.src; return scriptSrc.substring(0, scriptSrc.lastIndexOf('/') + 1); } // 使用示例 const currentJsDir = getCurrentScriptDir(); console.log(currentJsDir); // 输出类似:http://你的域名/wp-content/themes/themeName/users/js/
方式2:jQuery实现(更精准匹配)
function getCurrentScriptDir() { // 通过文件名精准匹配当前脚本标签 const currentScript = jQuery('script[src$="你的脚本文件名.js"]'); const scriptSrc = currentScript.attr('src'); return scriptSrc.substring(0, scriptSrc.lastIndexOf('/') + 1); } // 使用示例 const currentJsDir = getCurrentScriptDir(); console.log(currentJsDir);
注意:这里的你的脚本文件名.js要替换成你实际的JS文件名,确保能精准定位到当前脚本标签。
内容的提问来源于stack exchange,提问作者user9621809
相关产品推荐
相关产品推荐

