Erstens habe ich keine Antworten auf ähnliche Fragen, die dies sortiert haben, gesehen. Wenn Sie eine finden, die bereits existiert, lassen Sie es mich bitte wissen.Wordpress setcookie mit AJAX
Einfache AJAX-Anfrage, die einen Cookie setzt, um einen Timer-Ablauf zu speichern, der verdammte Cookie wird nicht gesetzt und ich kann nicht herausfinden, warum.
Ich benutze Vue Resource, also bitte keine jQuery. In der Tat bin ich mir absolut sicher, dass es überhaupt nichts mit JS oder AJAX zu tun hat. Es wird gut geschrieben und der "Ablauf" wird perfekt zurückgegeben.
Die 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;
})
}
Die 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();
}
EDIT 1 Wie gewünscht, die wp_ajax Aktionen
add_action('wp_ajax_nopriv_dbs_reservation', 'dbs_timer_session');
add_action('wp_ajax_dbs_reservation', 'dbs_timer_session');
Wer stimmte und Phantom downvoter schließen? Würde es Ihnen etwas ausmachen, warum zu erklären? – ggdx
+1 für die Verwendung von jQuery. Sie scheinen 'COOKIEPATH' in das Ablaufzeit-Argument zu übergeben. Zum Testen sollten Sie die Ausgabe von setcookie zurückgeben, was falsch wäre. Ich nehme an, Sie wissen, dass Sie Cookies auch mit js setzen können? Viel schneller! – David
Danke David! Ich kann nicht glauben, dass ich das verpasst habe! Bitte machen Sie dies eine Antwort und ich werde als die richtige markieren – ggdx