You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WooCommerce结账页出现SyntaxError: Unexpected token < in JSON报错求助

解决WooCommerce PayPal结账时的SyntaxError: Unexpected token < in JSON错误

这个报错是前端处理后端响应时的典型问题——服务器本该返回合法的JSON数据,但实际返回了HTML内容(比如PHP错误页面、服务器500错误的HTML模板),导致checkout.min.js解析JSON失败,才会弹出"Unable to fix malformed JSON"的警告。结合你已经禁用所有插件但问题未解决的情况,给你几个针对性的排查步骤:

1. 开启WordPress调试模式捕获详细错误

禁用插件排除了第三方冲突,大概率是主题、WooCommerce核心或PayPal网关的PHP代码报错。开启调试模式能帮你拿到精准的错误信息:

  • 打开站点根目录的wp-config.php文件,找到这行代码:
    define('WP_DEBUG', false);
    
    替换成:
    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);
    
    这样所有错误会写入wp-content/debug.log文件,不会在页面上显示(避免影响正常访问)。
  • 再次模拟结账并点击PayPal按钮,然后打开debug.log,找和操作时间匹配的报错,这能直接定位问题代码。

2. 检查PayPal网关的配置准确性

配置错误是PayPal支付环节的常见坑:

  • 进入WooCommerce后台 → 设置 → 支付 → PayPal,确认你选的模式(沙盒/生产环境)和对应的API密钥(Client ID、Secret)完全匹配,不要有多余的空格、换行或特殊字符。
  • 检查Webhook URL是否正确配置,并且在PayPal商家后台完成了验证。Webhook配置错误可能会触发异常响应,导致后端输出非JSON内容。

3. 排查主题的自定义结账模板

如果你的主题修改了WooCommerce的结账相关模板(比如woocommerce/checkout/form-pay.php),很可能是模板里的代码不小心输出了额外内容:

  • 临时切换到WooCommerce官方默认主题「Storefront」,再测试结账流程。如果问题消失,说明是主题的自定义模板有问题——检查模板文件里是否有调试用的echo语句、未闭合的HTML标签,或者PHP语法错误。

4. 深挖服务器error_log的具体报错

你提到服务器error_log有相关信息,重点关注这些报错的时间戳和具体内容:

  • 比如是否有PHP Fatal Error(比如调用了不存在的函数、类),或者Warning级别的错误导致服务器把错误信息输出到了响应里。这些输出会破坏JSON格式,导致前端解析失败。

5. 直接查看AJAX请求的响应内容

用浏览器开发者工具的「网络」面板,找到点击PayPal按钮时触发的AJAX请求(通常是wc-ajax=checkout或者包含paypal关键词的请求):

  • 查看该请求的「响应」标签页,如果显示的是HTML内容,直接读里面的错误提示(比如PHP的致命错误信息、服务器500错误页面),这是最直接的问题线索。

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

火山引擎 最新活动