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

WordPress下AJAX状态码200但success无值,PHP报tax_id未定义

问题解决步骤

1. 修复前端AJAX的拼写与元素选择问题

  • AJAX配置里的sucess是拼写错误,正确应为success,这会直接导致成功回调无法触发
  • 点击事件中用$(this)替代e.target,避免点击li内部子元素时无法获取到li的id值

修正后的前端代码:

$(".filter-bar li").click(function(e){
    const termID = +$(this).attr("id");
    $.ajax({
        method: "POST",
        url: ajax_query.url,
        data: {
            "action": "get_term_id",
            "tax_id": termID,
            "security": ajax_query.nonce
        },
        success: function(data){
            console.log(data);
            console.log("Succeed")
        },
        error: function(){
            console.log("Failed")
        }
    })
})

2. 修复后端PHP的输出与请求终止逻辑

  • PHP中return $id不会将内容输出到前端,需改用echo返回数据
  • return语句会终止函数执行,导致后续wp_die()无法触发,必须将wp_die()放在最后,用来正常终止AJAX请求
  • 建议添加nonce验证,提升请求安全性

修正后的PHP代码:

add_action("wp_ajax_get_term_id", "get_term_id");
add_action("wp_ajax_nopriv_get_term_id", "get_term_id");

function get_term_id(){
    // 验证请求nonce
    check_ajax_referer('ajax_query_nonce', 'security');
    
    $id = isset($_POST['tax_id']) ? $_POST['tax_id'] : 'Empty';
    echo $id;
    wp_die();
}

3. 补充前端本地化配置检查

确保你已通过wp_localize_script将AJAX参数正确传递到前端,示例代码:

wp_localize_script('your-custom-script-handle', 'ajax_query', array(
    'url' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('ajax_query_nonce')
));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:58:20