WordPress 8 Ajax请求返回多余</div>标签,JSON解析失败求助
WordPress Ajax请求解析错误(parsererror)排查与解决
你的Ajax请求返回的响应文本前出现了多余的</div>标签,导致JSON解析失败(parsererror),以下是具体排查和解决方法:
直接修复方法:清空输出缓冲区
在回调函数最开头添加ob_clean();,清除所有之前意外输出的内容,确保只有JSON响应被返回:
function my_callback(){ ob_clean(); // 清除缓冲区中已有的多余输出 ob_start(); include __DIR__ . '/my_php_file.php'; $html = ob_get_clean(); wp_send_json_success(['html' => $html]); }
深层原因排查
1. PHP文件多余输出
检查所有相关PHP文件(插件主文件、主题functions.php、包含的模板文件):
- 文件开头
<?php标签前不能有空格、换行或其他字符 - 文件结尾可以删除
?>标签,避免标签后的换行被输出 - 排查是否有不小心遗留的
echo、print或var_dump语句
2. 其他插件/主题的全局输出
有些插件或主题会在init、admin_init等全局钩子中输出内容(比如调试信息、布局标签),这些内容会被混入Ajax响应。可以:
- 暂时禁用所有其他插件,测试请求是否正常
- 切换到WordPress默认主题(如Twenty Twenty-Four),排查主题是否存在问题
3. 钩子优先级冲突
确认没有其他代码使用了相同的wp_ajax_add_program_button钩子,或者更高优先级的钩子提前输出了内容。可以尝试给你的钩子设置更高优先级:
add_action('wp_ajax_add_program_button', [$this, 'my_callback'], 1); // 优先级1,确保最先执行
内容的提问来源于stack exchange,提问作者Laura Fontaine
相关产品推荐
相关产品推荐

