
WordPress 中 AJAX 请求返回 {"success":true,"data":"0"},通常是因为 PHP 回调函数未正确返回结构化数据,而是混用 echo 与 wp_send_json_success(),导致输出被截断或序列化异常。
wordpress 中 ajax 请求返回 {"success":true,"data":"0"},通常是因为 php 回调函数未正确返回结构化数据,而是混用 echo 与 wp_send_json_success(),导致输出被截断或序列化异常。
在 WordPress 开发中,使用 wp_ajax_ 钩子处理前端 AJAX 请求时,必须严格遵循 WordPress 的 JSON 响应规范:回调函数应直接构造数据并交由 wp_send_json_success()(或 wp_send_json_error())统一序列化和输出,禁止使用 echo、print、ob_start()/ob_get_clean() 等原始输出方式——否则会破坏 JSON 结构,导致 data 字段被强制转为字符串 "0"。
✅ 正确写法:直接传入关联数组
function update_modification_dropdown_options() {
// 构建要返回的 HTML 片段(或其他任意结构化数据)
$options_html = '<option value="test">Test</option>';
// 将数据组织为数组,键名可自定义(如 'html', 'options', 'items')
$response = [
'html' => $options_html,
'timestamp' => current_time('mysql'),
'status' => 'success'
];
wp_send_json_success($response);
wp_die(); // 必须调用,防止后续意外输出
}
add_action('wp_ajax_send_dropdown_account_data', 'update_modification_dropdown_options');
add_action('wp_ajax_nopriv_send_dropdown_account_data', 'update_modification_dropdown_options'); // 如需非登录用户访问⚠️ 注意钩子名称一致性:前端
data.action值("send_dropdown_account_data")必须与add_action()中的 action 名称完全一致。你原代码中注册的是send_dropdown_account_dat(少一个a),这是常见拼写错误,会导致钩子未触发,进而wp_die()前无输出 →wp_send_json_success()接收空值 → 默认返回"0"。
Work Productivity Word Mail Workflow Helper下载构建并排查Microsoft Word邮件合并及DOCX模板工作流,使用合并域、内容控件、文档属性、重复区块、数据等
? 前端 JS 调用需适配 JSON 结构
$('#data-modification-table tbody').on('change', 'td select', function(e) {
e.preventDefault();
let $tr = $(e.target).closest('tr');
$.ajax({
type: "POST",
url: ajaxurl,
dataType: "json",
data: {
action: "send_dropdown_account_data", // ✅ 与 PHP 钩子名严格一致
account_id: $tr.find('.user_account_name').val(),
project_id: $tr.find('.user_project_name').val(),
},
success: function(response) {
if (response.success) {
// ✅ 正确读取嵌套字段
const optionsHtml = response.data.html;
// 示例:更新同行另一个下拉框
$tr.find('.dependent-select').html(optionsHtml);
console.log('Dropdown updated:', optionsHtml);
} else {
console.warn('AJAX failed:', response.data);
}
},
error: function(xhr, status, error) {
console.error('AJAX request failed:', status, error);
}
});
});? 调试建议
- 使用浏览器 Network 面板 → 查看 admin-ajax.php 请求的 Response 和 Headers,确认
Content-Type: application/json且响应体为合法 JSON; - 在 PHP 函数开头添加
error_log('Hook triggered');验证钩子是否执行; - 检查 WordPress 错误日志(
wp-content/debug.log)是否有 PHP Notice/Warnning; - 确保
wp_localize_script()正确传递了ajaxurl,且未被其他插件覆盖。
遵循以上规范后,AJAX 将稳定返回结构化 JSON 数据,彻底解决 "0" 问题,并为复杂交互(如多级联动、动态分页)奠定可靠基础。


















