jquery - 使用 AJAX 存储 cookie 的 jQuery 不起作用
问题描述
当用户登录时,我正在尝试存储一个包含用户邮政编码的 cookie。对于 PHP 登录,它工作正常,使用“wp_login”操作挂钩。但我的网站也有 AJAX 登录。到目前为止,我的代码无法正常工作,但也没有引发任何错误。
jQuery:
function get_zipcode() {
jQuery.get(ajaxurl,{'action': 'user_zipcode_callback'},
function (zipcode) {
Cookies.remove('visitor_zipcode');
if (zipcode != '') {
var CookieDate = new Date;
CookieDate.setFullYear(CookieDate.getFullYear() +10);
document.cookie = 'visitor_zipcode=' + zipcode + '; expires=' + CookieDate.toUTCString() + '; path=/';
}
}).then(function(){
window.location.reload(true);
});
}
jQuery(document).on('lrm_user_logged_in', function(response, $form) {
get_zipcode();
});
AJAX 调用获取用户的邮政编码:
function user_zipcode_callback() {
$user_zipcode = get_user_meta(get_current_user_id(),"shipping_postcode",true);
if($user_zipcode == '') $user_zipcode = get_user_meta(get_current_user_id(),"billing_postcode",true);
echo $user_zipcode;
wp_die(); // this is required to terminate immediately and return a proper response
}
add_action('wp_ajax_user_zipcode_callback', 'user_zipcode_callback');
这是用于 PHP 登录的,它是不相关的,但也许可以添加一个上下文:
function add_zipcode_cookie($user_login) {
if (isset($_COOKIE['visitor_zipcode'])) {
unset($_COOKIE['visitor_zipcode']);
setcookie('visitor_zipcode', '', time() - 3600, '/');
}
$user_obj = get_user_by('login', $user_login );
$user_zipcode = get_user_meta($user_obj->ID,"shipping_postcode",true);
if($user_zipcode == '') $user_zipcode = get_user_meta($user_obj->ID,"billing_postcode",true);
if($user_zipcode != '') {
setcookie('visitor_zipcode', $user_zipcode, time() + (10 * 365 * 24 * 60 * 60), '/');
}
}
add_action('wp_login', 'add_zipcode_cookie');
解决方案
请理解,为了创建会话,需要通知 PHP 服务器需要创建会话。换句话说,后端应该创建一个 PHPSESSID cookie(我们可以根据您的要求设置其值。)
正如这里所解释的
https://stackoverflow.com/a/8531421/6653215
请在服务器端使用 setcookie 功能。
希望这可以帮助
推荐阅读
- lua - 错误:“尝试索引全局“自我”(零值)
- python - Python - jupyter notebook 上的绘图问题
- excel - 我如何写一些excel公式,见下面的描述
- django - 如何使用具有多个对象的登录用户过滤 Django 模型数据
- c# - linq 最大和最小日期
- javascript - 在单张纸上显示两个响应
- spring - 我正在寻找检查记录是否存在的最佳方法?
- vbscript - 如何确定哪些 vbscript 在后台运行
- geometry - 如何在 A 上的特定点创建与另一个大圆弧 (A) 垂直的大圆弧 (B)?
- java - 如何加密发送到 oauth 服务器的表单数据?