You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:修复WooCommerce结账页SyntaxError: Unexpected token < in JSON at position 2

Troubleshooting "SyntaxError: Unexpected token < in JSON at position 2" on WooCommerce Checkout

Let's break down what's happening here: that error means WooCommerce is expecting a JSON response after you click the payment button, but instead it's getting HTML content (like a PHP error page, warning message, or extra whitespace from your theme). That's why the order gets created (the backend logic ran successfully) but the frontend can't parse the response to redirect you to the thank you page.

Since you already tried disabling plugins without luck, let's focus on the most likely remaining causes and fixes:

1. Enable Debug Logging to Catch Hidden PHP Errors

First, let's get to the root of what's generating that HTML. Add these lines to your wp-config.php file (right above the /* That's all, stop editing! Happy publishing. */ line):

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

This will log any PHP errors/warnings to wp-content/debug.log instead of displaying them on the page. After triggering the error again, check that log file—it should show exactly what's breaking the JSON response (e.g., a fatal error in your theme's functions.php, or a deprecated function call).

2. Inspect the AJAX Response Directly

Use your browser's developer tools (F12) to see exactly what's coming back:

  • Go to the Network tab
  • Trigger the checkout process again
  • Look for an AJAX request named something like wc-ajax/checkout
  • Click on it, then check the Response tab
    You'll probably see HTML here—maybe a WordPress error page, or extra whitespace/characters from your theme. This will tell you exactly what's interfering with the JSON output.

3. Test with a Default Theme

Even if you think your theme is fine, switch temporarily to the official Storefront theme (WooCommerce's default) or a Twenty-series WordPress theme. Custom themes often override WooCommerce templates or add extra output in the checkout flow that breaks AJAX responses. If the error goes away, you know your theme is the culprit—check for:

  • Extra whitespace/newlines at the start or end of your theme's functions.php file
  • Syntax errors in custom checkout templates (look in your-theme/woocommerce/checkout/ folder)
  • Custom code hooked into WooCommerce checkout actions that's echoing content instead of returning it

4. Check Server & PHP Configuration

  • Increase PHP Memory Limit: Add this to wp-config.php to rule out memory issues:
    define('WP_MEMORY_LIMIT', '256M');
    
  • Check .htaccess Rules: If you've modified your .htaccess file, try replacing it with the default WordPress version (back up your current one first):
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress
    
  • ModSecurity or Server Firewall: Some servers have ModSecurity enabled which can block WooCommerce's AJAX requests. Check with your hosting provider to see if this is causing the issue, or if any requests are being flagged.

5. Verify WooCommerce Template Integrity

If your theme overrides WooCommerce templates, use the WooCommerce System Status page (WooCommerce > Status > Templates) to check for outdated templates. Outdated templates can have bugs that break the checkout flow. Update any templates marked as outdated to match the version included with WooCommerce 3.5.7.

6. Check PHP Version Compatibility

WordPress 5.1.1 recommends PHP 7.2 or higher, while WooCommerce 3.5.7 supports PHP 7.0+. If you're running an older PHP version (like 5.6), this could cause compatibility issues that lead to hidden errors. Check your PHP version via WooCommerce > Status, and ask your host to update it if needed.

Once you fix the underlying issue that's generating HTML instead of JSON, the checkout redirect should work as expected.

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:58:48