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

WordPress站点AJAX请求URL错误引发404问题求助

解决WordPress下AJAX请求URL被错误解析为相对路径的问题

嘿,我之前在WordPress里也碰到过这种AJAX路径乱掉的情况,明明写了完整绝对路径,结果浏览器硬是当成当前页面的相对路径发请求,太坑了。咱们一步步来解决:

首先排查最基础的语法问题

你说设置了完整路径https://yyy.yyy/test.php,但实际请求变成了https://yyy.yyy/test-page/test.php,大概率是JS代码里的URL字符串有语法错误——比如引号没闭合、或者不小心漏写了https://开头(别笑,我真见过有人手抖写成https:...少打了斜杠)。先仔细检查你的AJAX代码:

$.ajax({
    url: "https://yyy.yyy/test.php", // 确认这里拼写全对,引号没漏
    method: "POST",
    // 其他参数比如data、success回调之类的
});

如果确认路径完全正确,但还是出问题,试试下面更稳妥的方法。

方案1:用WordPress内置函数获取站点根URL(最推荐)

WordPress本身有全局变量可以传递站点根URL到前端,这样不用手动写死路径,还能避免各种拼写或环境变更的问题:

  1. 打开你的主题functions.php,添加这段代码:
function pass_site_url_to_frontend() {
    // 替换成你的自定义JS文件路径,或者用现有脚本的handle
    wp_enqueue_script('custom-ajax-js', get_template_directory_uri() . '/js/your-script.js', array('jquery'), '1.0', true);
    // 把站点URL传到JS全局变量里
    wp_localize_script('custom-ajax-js', 'WP_SITE_DATA', array(
        'rootUrl' => get_site_url()
    ));
}
add_action('wp_enqueue_scripts', 'pass_site_url_to_frontend');
  1. 然后在你的JS代码里,用这个全局变量拼接请求URL:
$.ajax({
    url: WP_SITE_DATA.rootUrl + '/test.php',
    method: 'POST',
    // 其他参数
});

这种方法完全适配WordPress的站点结构,就算以后换域名或者修改站点URL,代码也不用改。

方案2:禁用全局AJAX设置干扰

有些主题或插件会用$.ajaxSetup()修改全局的AJAX配置,比如自动给URL加前缀,导致你的自定义路径被篡改。可以在你的AJAX请求里加上global: false来规避:

$.ajax({
    url: "https://yyy.yyy/test.php",
    method: "POST",
    global: false, // 禁用全局AJAX的默认设置和事件
    // 其他参数
});

方案3:清浏览器缓存试试

有时候浏览器会缓存旧的JS代码,你改了URL但浏览器还是用的旧版本。按Ctrl+F5强制刷新页面,或者清空浏览器缓存后再测试,说不定就好了。

额外提一句:其实WordPress有自带的AJAX API(用admin-ajax.php),更安全还能利用WordPress的权限验证,但如果你因为特殊情况必须用根目录的test.php,上面的方案应该能解决你的问题。

内容的提问来源于stack exchange,提问作者luz.arthur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:55:02