Php 在多次ajax调用后未保留会话数据

Php 在多次ajax调用后未保留会话数据,php,ajax,wordpress,session,woocommerce,Php,Ajax,Wordpress,Session,Woocommerce,我试图将自定义值存储到WooCommerce会话中,并通过在签出屏幕中触发的多个ajax调用保留数据 这是事情的一般流程: 用户将项目添加到购物车中 用户进入结帐屏幕(商品在购物车中) 我启动了一个ajax调用来在服务器上工作: ajax调用: 服务器代码: 然后,我进行另一个ajax调用来检索存储的会话值: ajax调用: 服务器代码: 它返回null,而不是我以前存储的值 jQuery.ajax({ type : 'post', dataType : 'jso

我试图将自定义值存储到WooCommerce会话中,并通过在签出屏幕中触发的多个ajax调用保留数据

这是事情的一般流程:

  • 用户将项目添加到购物车中
  • 用户进入结帐屏幕(商品在购物车中)
  • 我启动了一个ajax调用来在服务器上工作:
    • ajax调用:
    • 服务器代码:
  • 然后,我进行另一个ajax调用来检索存储的会话值:
    • ajax调用:
    • 服务器代码:
  • 它返回
    null
    ,而不是我以前存储的值
  • jQuery.ajax({
        type : 'post',
        dataType : 'json',
        url : wc_add_to_cart_params.ajax_url,
        data : {
            action: 'update_cart'
        },
        success: function(response) {
            console.log('done storing data');
        }
    });
    
    class SetCustomSessionData
    {
        public function __construct()
        {
            add_action( 'wp_ajax_update_cart', [ $this, 'update_cart' ] );
            add_action( 'wp_ajax_nopriv_update_cart', [ $this, 'update_cart' ] );
            
            if ( isset(WC()->session) && ! WC()->session->has_session() ) {
                WC()->session->set_customer_session_cookie( true );
            }
        }
    
        public function update_cart()
        {
            // update session data here
            WC()->session->set( 'my_custom_data_key_for_later', '123456789' );
    
            // my attempts to ensure that the value is actually saved
            WC()->session->save_data();
            WC()->cart->calculate_totals();
            WC()->cart->set_session();
            WC()->cart->maybe_set_cart_cookies();
    
            wp_die();
        }
    }
    
    jQuery.ajax({
        type : 'post',
        dataType : 'json',
        url : wc_add_to_cart_params.ajax_url,
        data : {
            action: 'get_cart_data'
        },
        success: function(response) {
            console.log(response);
        }
    });
    
    class GetCustomSessionData
    {
        public function __construct()
        {
            add_action( 'wp_ajax_get_cart_data', [ $this, 'get_cart_data' ] );
            add_action( 'wp_ajax_nopriv_get_cart_data', [ $this, 'get_cart_data' ] );
            
            if ( isset(WC()->session) && ! WC()->session->has_session() ) {
                WC()->session->set_customer_session_cookie( true );
            }
        }
    
        public function get_cart_data()
        {
            echo WC()->session->get( 'my_custom_data_key_for_later' );
    
            wp_die();
        }
    }