带有 AJAX 的 Wordpress setcookie
Wordpress setcookie with AJAX
首先,我还没有看到对类似问题进行排序的任何答案。如果您找到一个已经存在的,请告诉我。
简单的 AJAX 请求设置一个 cookie 来存储计时器到期,该死的 cookie 没有被设置,我不知道为什么。
我正在使用 Vue Resource,所以请不要 jQuery。事实上,我绝对确定它与 JS 或 AJAX 完全无关。发布正常,"expiry" 返回得很好。
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' );
你能告诉我们你是如何设置动作的吗?以下是示例,具体取决于您是在管理员还是在前端。
//For admin use only:
add_action( 'wp_ajax_my_action', 'my_action_callback' );
//For front end use
add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );
您缺少 setcookie
的参数
setcookie('dbs_timer', md5($t).'|'.$t, 'missing_expiry_time', COOKIEPATH, COOKIE_DOMAIN);
首先,我还没有看到对类似问题进行排序的任何答案。如果您找到一个已经存在的,请告诉我。
简单的 AJAX 请求设置一个 cookie 来存储计时器到期,该死的 cookie 没有被设置,我不知道为什么。
我正在使用 Vue Resource,所以请不要 jQuery。事实上,我绝对确定它与 JS 或 AJAX 完全无关。发布正常,"expiry" 返回得很好。
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' );
你能告诉我们你是如何设置动作的吗?以下是示例,具体取决于您是在管理员还是在前端。
//For admin use only:
add_action( 'wp_ajax_my_action', 'my_action_callback' );
//For front end use
add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );
您缺少 setcookie
setcookie('dbs_timer', md5($t).'|'.$t, 'missing_expiry_time', COOKIEPATH, COOKIE_DOMAIN);