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

通过jQuery AJAX传递SessionStorage数据至WordPress数据库失败求助

问题排查与修复方案

核心错误点分析

  1. 前端数据编码错误:
    sessionStorage.getItem('shoppingCart')返回的本身就是JSON格式字符串,再次调用JSON.stringify()会把它转成双重JSON编码的字符串,后端解析后无法得到正确的对象结构。同时用字符串拼接方式传递AJAX数据,会导致JSON中的特殊字符(如引号、&符号)被破坏,无法正确传递。

  2. 后端变量未定义:
    在update_post_meta中使用了未定义的变量$menu_make_arr,这直接导致数据库存入null。此外缺少数据合法性校验,也没有正确终止WordPress AJAX请求。


修复后的前端代码

// 直接获取sessionStorage中的JSON字符串,无需再次stringify
var dataStorage = sessionStorage.getItem('shoppingCart');

$.ajax({
    url: "https://mywebsite.com/wp-admin/admin-ajax.php",
    method: "POST",
    // 使用对象形式传递数据,jQuery会自动处理编码
    data: {
        globalvar: dataStorage,
        action: 'myfunction'
    },
    dataType: "json"  
}).done(function (response) {
    console.log('数据保存成功:', response);
}).fail(function(err) {
    console.error('请求失败:', err);
});

修复后的后端PHP代码

if (!function_exists('myfunction')) {
    function myfunction() {
        // 先校验数据是否存在
        if (!isset($_POST['globalvar']) || empty($_POST['globalvar'])) {
            wp_send_json_error(['message' => '缺少有效数据']);
        }

        $object = $_POST['globalvar'];
        // 解析JSON,第二个参数设为true转成数组,适配WordPress存储习惯
        $decoded_data = json_decode($object, true);

        // 校验解析是否成功
        if (json_last_error() !== JSON_ERROR_NONE) {
            wp_send_json_error(['message' => '数据解析失败']);
        }

        // 使用解析后的有效数据更新元字段
        $update_result = update_post_meta('42393', 'menu_items_list', $decoded_data);
        
        // 返回响应并终止请求
        if ($update_result) {
            wp_send_json_success(['message' => '数据保存成功']);
        } else {
            wp_send_json_error(['message' => '数据保存失败']);
        }
    }

    add_action('wp_ajax_myfunction', 'myfunction');
    add_action('wp_ajax_nopriv_myfunction', 'myfunction');
}

额外验证步骤

  1. 在浏览器控制台执行sessionStorage.getItem('shoppingCart'),确认返回的是合法的JSON字符串
  2. AJAX请求发送前,可在done回调中打印response,查看后端返回的状态信息
  3. 检查WordPress数据库中postmeta表,确认post_id=42393的menu_items_list字段是否正确存储数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:15:40