kizumi_header_banner_img

Hello! 欢迎光临Aurora.歆の小破站!

加载中

文章导读

修复Lolimeow和Kizumi主题发布评论出现“网络错误,请重试”的问题


avatar
Aurora.歆Official 2026年7月29日 47

问题描述

用户评论文章时提示“网络错误,请重试”的错误信息,刷新页面能看到发布的评论。

解决方案

经过站长调试,发现问题出在主题设置→通知设置中的这两项

将这两项禁用即可正常发布评论。

报错解析

有人会问了,你开了SMTP发件系统开关,是不是没配置啊?

配置了,但就是会报错。

Uncaught ReferenceError: jQuery is not defined

页面上有一个 JavaScript 脚本(在 archives/312 这个页面里)试图调用 jQuery($ 符号),但此时浏览器还没有加载或根本找不到 jQuery 这个库。大概率是主题或插件的脚本加载顺序出了问题(脚本在 jQuery 库文件加载之前就执行了),或者 jQuery 库因 CDN 链接失效、被插件禁用等原因根本没有加载成功。

 

因为第一行的报错带来的连锁反应导致第二个报错发生

Uncaught TypeError: is not a function (位于 erphpdown.js)

erphpdown 插件(一个收费下载/会员插件)的 JS 文件开始运行了。它内部的标准写法通常是

(function($){ … })(jQuery);

既然 jQuery 是 undefined(未定义),那么传进插件的参数就是 undefined。插件试图把 undefined 当作函数来调用(比如 $.ajax 或 $(document)),所以浏览器报错“这不是一个函数”。

所以说这是由“jQuery 未加载”直接导致的,插件本身并没有坏,只是它的运行环境坏了。

 

因为前两项的报错导致最终评论系统报错

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data (位于 comments.js)

前端评论脚本通过 AJAX 向服务器请求数据,并期望服务器返回一个标准的 JSON 格式 数据。但服务器返回的第一行第一个字符不是 { 或 [,而是别的字符(比如 PHP 警告、报错信息、或者 HTML 标签)。

为啥会这样?因为 erphpdown 插件的 JS 挂了,它很可能也同时挂载了后端的某些钩子(Hook)。当 PHP 后端因为插件兼容性问题抛出 致命错误(Fatal Error) 或 警告(Warning) 时,这些错误文本会直接输出到 AJAX 的返回值里,污染了原本该返回的 JSON 数据,导致前端的 JSON.parse 解析失败。

 

总结:

jQuery 库加载失败
➔ 导致 erphpdown.js 无法运行(报错 is not a function)
➔ 导致该插件相关的 PHP 后端逻辑出现异常,输出错误信息污染了 AJAX 接口
➔ 导致评论提交时拿不到正确的 JSON 数据,最终报 JSON.parse 错误。

那这一时刻又有聪明的吴彦祖要问了

“关掉邮箱通知跟jQuery库有什么关系呢?”

问得好,“关掉邮箱评论通知”并没有修复“jQuery未定义”的报错,但它精准地绕过了导致“评论提交失败”的那个核心点。

邮箱发信失败时产生的“错误警告文本”,污染了本该返回纯JSON格式的数据接口

当你点击提交评论时,WordPress 后端会按顺序做两件事:

  1. 先保存评论内容到数据库。

  2. 再触发“邮箱评论通知”功能(调用 wp_mail() 函数给你或管理员发邮件)。

主题自带的SMTP功能并不完善,当 wp_mail() 尝试发信但失败时,PHP 会吐出一个警告(Warning)或错误(Notice)

更生草的是,这个警告文本不是存进日志里,而是直接打印(echo)在了接口的返回输出流里。

结果前端 comments.js 期待的返回值应该是 {“success”:true, “msg”:”…”},但因为发信报错,实际返回变成了:

Warning: mail(): Failed to connect to mailserver at … in /xxx/wp-includes/pluggable.php
{“success”:true, “msg”:”…”}

JSON.parse() 看到第一行第一个字符是 W(而不是 {),直接报错 unexpected character at line 1 column 1,所以评论发布后提示失败。

理论上还是发信配置问题

为什么关掉发信就能好?当你关掉“邮箱评论通知”后,WordPress 后台逻辑直接跳过了 wp_mail() 的执行步骤。不再尝试发信,PHP 也就不再抛出任何警告文本。后端干干净净地只输出纯 JSON 数据,前端解析成功,评论自然就提交成功了。

但是,jQuery is not defined  报错:这个报错依然存在,只是它们没有阻塞评论提交的 HTTP 请求。
关掉邮件通知后,只是觉得“评论功能好了”,但如果打开浏览器 F12 控制台,那个红色的 JS 报错大概率还在,不过不影响纯文字评论的提交了。

感谢您的支持
微信赞赏

微信扫一扫

支付宝赞赏

支付宝扫一扫



评论(1)

查看评论列表
评论头像
Aurora.歆Official 楼主喵 2026年07月29日
本站用的是Kizumi这个主题,实测Lolimeow也能修

发表评论

Aurora.歆の小破站

关于站长喵

avatar

Aurora.歆Official

网易音乐人、歌手、制作人

23
文章
14
评论
6
用户

我是广告喵

文章归档喵