Php 在多次ajax调用后未保留会话数据
我试图将自定义值存储到WooCommerce会话中,并通过在签出屏幕中触发的多个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
- 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();
}
}