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

WordPress wp_ajax返回400 Bad Request错误求助

WordPress admin-ajax.php 返回400错误修复方案

核心错误原因

WordPress AJAX接口的匹配规则是:前端POST请求中action字段的值,必须和后端wp_ajax_*/wp_ajax_nopriv_*钩子的后缀完全一致,否则WordPress找不到对应处理逻辑,会直接返回400 Bad Request。
你当前代码的匹配关系完全错误:

  • 前端JS提交的action值为send_form
  • 后端PHP注册AJAX钩子时用的后缀为findajob_admin_ajax
    两者不匹配是报错的根本原因。

其他代码问题

  • 表单标签属性书写错误:<form type="POST">是无效写法,指定表单提交方式的属性是method,正确写法为<form method="POST">,虽然当前用AJAX提交不触发原生表单提交,但建议修正避免后续出问题。
  • 代码存在冗余:findajob_load_scripts和findajob_shortcode两个函数中重复定义了$current_page变量,短代码函数内的该变量没有实际使用,可以删除。

修复步骤

  1. 修改前端JS代码中的action参数值,和后端保持一致,修正后的JS代码:
$(document).ready(function($){
  $('button[name="Test"]').on('click', function(e){
        e.preventDefault();
        $.ajax({
            url: findjob.ajaxurl,
            type: 'POST',
            data: {
                'action': "findajob_admin_ajax"
            },
            success: function(Resp) {
                alert(Resp);
            },
            error: function(a, b, c) {
                console.log(a, b, c);
            }
        });
    });
});
  1. (可选安全优化)增加nonce校验,避免跨站请求伪造:
    修改PHP端脚本本地化逻辑,传入生成的nonce:
wp_localize_script('findajob-js', 'findjob', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'current_page' => $current_page,
    'ajax_nonce' => wp_create_nonce('findajob_ajax_verify')
));

在AJAX处理函数开头增加nonce校验逻辑:

function findajob_admin_ajax() {
    // 校验nonce,校验不通过直接返回403
    check_ajax_referer('findajob_ajax_verify', 'ajax_nonce');
    echo "testing";
    wp_die();
}

前端提交数据时带上nonce参数:

data: {
    'action': "findajob_admin_ajax",
    'ajax_nonce': findjob.ajax_nonce
}

修改完成后清空站点缓存、浏览器缓存再测试,即可正常收到testing的响应内容。

内容的提问来源于stack exchange,提问作者Luke Clynes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:36:16