Во-первых, я не видел никаких ответов на подобные вопросы, которые бы отсортировали это. Если вы найдете тот, который уже существует, пожалуйста, дайте мне знать.
Простой AJAX-запрос, который устанавливает cookie для хранения истечения таймера, проклятый 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' );
Вы пропустили аргумент для setcookie
setcookie('dbs_timer', md5($t).'|'.$t, 'missing_expiry_time', COOKIEPATH, COOKIE_DOMAIN);
Можете ли вы показать нам, как вы настраиваете действие? Ниже приведены примеры в зависимости от того, являетесь ли вы администратором или веб-интерфейсом.
//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' );