0

まず、これを分類した同様の質問に対する回答は見たことがありません。すでに存在するものを見つけた場合は、お知らせください。

タイマーの有効期限を保存するように Cookie を設定する単純な AJAX リクエストですが、いまいましい Cookie が設定されておらず、その理由がわかりません。

私はVue Resourceを使用しているので、jQuery は使用しないでください。実際、JS や AJAX とはまったく関係がないと確信しています。それはうまく投稿されており、「有効期限」は完全にうまく返されています。

JS:

var sessionKey = document.querySelector('meta[name=dbs]').getAttribute('content');
if(sessionKey.length < 1){
    var data = {action: 'dbs_reservation'};
    this.$http.get(ajaxurl,data).then((response) => {
        this.sessionExpiry = response.data.expiry;
     })
}

PHP

function dbs_timer_session(){
    if(empty($_COOKIE['dbs_timer'])){
        $t = time()+600;
        setcookie('dbs_timer', md5($t).'|'.$t, COOKIEPATH, COOKIE_DOMAIN);
    } else {
        $t = explode('|',$_COOKIE['dbs_timer']);
        $t = $t[1];
    }
    echo json_encode(['expiry' => $t]);
    wp_die();
}

編集 1 要求に応じて、wp_ajax アクション

add_action( 'wp_ajax_nopriv_dbs_reservation', 'dbs_timer_session' );
add_action( 'wp_ajax_dbs_reservation', 'dbs_timer_session' );
4

2 に答える 2

3

の引数がありませんでしたsetcookie

 setcookie('dbs_timer', md5($t).'|'.$t, 'missing_expiry_time', COOKIEPATH, COOKIE_DOMAIN);
于 2016-06-27T22:18:52.177 に答える