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

WordPress中Ajax请求出现400 Bad Request错误,求解决方案

解决WordPress AJAX请求400 Bad Request错误

以下是针对你遇到问题的具体解决方案,按优先级排序:

1. 必须添加CSRF Nonce验证

WordPress的admin-ajax.php对POST请求强制要求Nonce验证,缺少验证是触发400错误的最常见原因。

后端修正(将代码放在主题functions.php或自定义插件中)

// 处理sendsms请求
function sendsms_function(){
    // 验证Nonce,第一个参数是自定义动作名,第二个是前端传递的参数名
    check_ajax_referer('ajax_nonce', 'security');
    // 使用wp_send_json输出标准JSON格式内容,替代echo
    wp_send_json('hello');
}
add_action('wp_ajax_nopriv_sendsms', 'sendsms_function');
add_action('wp_ajax_sendsms', 'sendsms_function');

// 处理get_data请求
function get_data() {
    check_ajax_referer('ajax_nonce', 'security');
    wp_send_json('test');
}
add_action( 'wp_ajax_nopriv_get_data', 'get_data' );
add_action( 'wp_ajax_get_data', 'get_data' );

前端修正

<button type="button" class="btn woocommerce-Button button" id="sendsms" name="sendsms" >send</button>

<script>
jQuery(document).ready(function($){
    $("#sendsms").click(function(){
         jQuery.ajax({
            type: "post",
            dataType: "json",
            // 使用WordPress提供的函数生成绝对路径,避免相对路径出错
            url: "<?php echo admin_url('admin-ajax.php'); ?>", 
            data: {
                action:'get_data', 
                id: 4,
                // 传递生成的Nonce值
                security: "<?php echo wp_create_nonce('ajax_nonce'); ?>"
            },
            success: function(msg){
                alert(msg);
            },
            error: function(xhr, status, error){
                // 打印错误详情到控制台,方便调试
                console.log(xhr.responseText);
                alert('请求错误: ' + error);
            }
        });
    });
});
</script>

2. 修正函数注册位置

不要将add_action和处理函数直接放在页面模板中,必须放在主题functions.php或自定义插件文件内,否则WordPress无法正确注册AJAX钩子,导致请求找不到对应处理函数,触发400错误。

3. 匹配响应格式与dataType

前端指定了dataType: "json",后端必须输出合法的JSON格式内容。使用wp_send_json()函数替代echo,它会自动设置正确的响应头并将内容转为JSON格式,避免解析错误。

4. 其他排查点

  • 检查安全插件:如Wordfence、iThemes Security等可能会拦截未带Nonce的AJAX请求,需在插件设置中添加例外或确保Nonce验证正确。
  • 固定链接配置:如果使用了自定义固定链接,确保.htaccess文件配置正确,可尝试切换回默认固定链接测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:53:11