无法在firefox和safari浏览器中设置会话变量

时间:2018-05-29 11:32:22

标签: php wordpress woocommerce session-variables

我正在使用Ajax设置会话变量,它在chrome中运行良好,但在safari和Firefox浏览器中不起作用

这是我的Ajax方法:

add_action('wp_ajax_wdm_add_user_custom_data_options', 'wdm_add_user_custom_data_options_callback');
add_action('wp_ajax_nopriv_wdm_add_user_custom_data_options', 'wdm_add_user_custom_data_options_callback');
function wdm_add_user_custom_data_options_callback()
{
    //Custom data - Sent Via AJAX post method
    $product_id = $_POST['custom_data_4']; 
    $custom_data_1 = $_POST['custom_data_1']; 
    $custom_data_2 = $_POST['custom_data_2'];
    $custom_data_3 = $_POST['custom_data_3'];


    $_SESSION['product_idd'] = $product_id;
    $_SESSION['custom_data_1'] = $custom_data_1;
    $_SESSION['product_pos'] = $custom_data_2;
    $_SESSION['product_lmm'] = $custom_data_3;
       die();
}

当我尝试在Ajax方法上面打印$ _SESSION和$ _POST值时,它适用于所有浏览器,但是当我尝试在下面的函数中分配上面的会话变量时: -

function kia_add_cart_item_data( $cart_item, $product_id ){

   if(isset($_SESSION['product_pos']) && $_SESSION['product_idd']==$cart_item['product_id']){
            $posnumber=$_SESSION['product_pos'];
        }else{
            $posnumber=1;
        }
        if(isset($_SESSION['product_lmm']) && $_SESSION['product_idd']==$cart_item['product_id']){
            $lmmnumber=$_SESSION['product_lmm'];
        }else{
            $lmmnumber=1;
        }

        $array['product_id'] = $product_id;


        $cart_item['product_pos'] = $posnumber;
        $cart_item['product_lmm'] = $lmmnumber;
    return $cart_item;

}

然后,我在Firefox和Safari浏览器的情况下获得其他部分价值,而它在Chrome中运行良好。

请帮助我为什么我没有在Firefox和Safari中获得会话值。

2 个答案:

答案 0 :(得分:0)

据我说,你需要在这里使用wordpress会话。

$wp_session = WP_Session::get_instance();

例如:

$wp_session = WP_Session::get_instance();
$wp_session ['product_idd'] = $product_id;

以上是用于存储会话中的值以及如何获取值

$wp_session = WP_Session::get_instance();
echo $wp_session ['product_idd'];

尝试使用此方法,让我知道它是否正常工作

答案 1 :(得分:0)

实际上我忘了在jQuery.ajax中传递async:false。现在工作正常。

async:false在ajax中做什么

“async:false将保留其余代码的执行。一旦得到ajax的响应,只有这样,其余的代码才会执行​​”