You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取已执行JavaScript文件目录及Ajax请求目标PHP文件目录?

解决两个路径获取问题:PHP文件所在目录与当前JS文件目录

嘿,在WordPress主题开发里碰到这种路径问题太正常了,我给你分两个场景详细说解决方案:

一、获取Ajax请求用的PHP文件所在目录

因为你的PHP文件放在/httpdocs/wp-content/themes/themeName/users下,最规范且安全的方式是利用WordPress的脚本本地化功能,把PHP端的路径传递到JavaScript里——硬编码路径很容易因为主题目录名变化、站点迁移出问题,用官方方法更稳妥。

实现步骤:

  1. 在你的主题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' );
  1. 然后在你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:28:04