Невозможно установить переменную сеанса в браузере Firefox и Safari. - PullRequest
0 голосов
/ 29 мая 2018

Я устанавливаю переменную сеанса с помощью 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();
}

Когда я пытаюсьчтобы напечатать значение $ _SESSION и $ _POST внутри вышеуказанного метода Ajax, он работает нормально для всех браузеров, но когда я пытаюсь назначить указанную выше переменную сеанса в функции ниже: -

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 голосов
/ 01 июня 2018

На самом деле я забыл передать async: false внутри jQuery.ajax.Теперь он работает нормально.

что делает Async: false в ajax

"async: false будет задерживать выполнение кода покоя. Как только вы получите ответ от ajax, только тогда, остальные изкод выполнится "

0 голосов
/ 29 мая 2018

По моему мнению, вам нужно использовать сессию 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'];

Попробуйте использовать этот метод и дайте мне знать, работает ли он для вас или нет

...