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
相关产品推荐
相关产品推荐

