【问题标题】:Get the new updated COOKIE value via AJAX using PHP使用 PHP 通过 AJAX 获取更新后的新 COOKIE 值
【发布时间】:2012-05-28 14:27:32
【问题描述】:

这可能是一个新手问题,但我真的需要帮助。

我正在在线商店创建愿望清单,如果用户已登录,愿望清单项目将保存在数据库中,未登录用户的愿望清单将通过 cookie 保存,我使用 AJAX 进行愿望清单功能。一切都很顺利,只是在第一个 ajax 请求中没有更新 cookie。

这是我的第一步(ajax):

  1. 调用 ajax 请求更新愿望清单
  2. 根据新的 cookie 重新加载愿望清单模板

上述步骤不会自动更新愿望清单模板$_COOKIE[]需要刷新页面。

这是我更新的步骤(ajax)

  1. 调用 ajax 请求更新愿望清单
  2. 调用另一个 ajax 请求以重新加载愿望清单模板

上面的代码解决了问题,(调用第2步只是刷新$_cookie的值。),但是更新wishlist需要两次ajax请求,需要一点时间。我敢肯定,这不是最好的解决方案。我知道这是一个更好的解决方案。

请帮忙:)

谢谢

【问题讨论】:

  • Cookies 由浏览器在第一个请求中设置,并与到达服务器的每个进一步请求一起发送。但这是这里的问题吗?为什么不让 PHP(您的 AJAX 请求命中)将愿望清单与 cookie 一起返回给您?
  • 是的,为什么要打 2 个电话?您可以只传递一个额外的参数来检索愿望清单模板。此外,您可以创建一个 js 数组并将从服务器检索到的 cookie/会话存储在那里,只要您的页面没有刷新并仅测试这些。
  • 感谢大家的快速帮助!!! :)

标签: php ajax cookies


【解决方案1】:

Cookie 可由 单独设置。当您使用 时,我认为您可以在不刷新任何页面的情况下处理 很好。

这是您应该实现的逻辑。

  1. 向您的 PHP 页面发送 Ajax 请求。
    • 如果您已登录,PHP 会将数据保存在数据库中并返回状态值 1。
    • 否则 PHP 返回状态值 0。表示您尚未登录,无法将其保存在数据库中。
    • 在返回0 时,PHP 可以填充$_COOKIE 超全局。请求完成后,它将在浏览器中设置 cookie。
  2. 在 ajax 请求的回调事件中检查状态值。如果它的0 只是将数据保存在cookie 中。此 cookie 可通过document.cookie 获得。这可以通过 轻松完成

使用 jQuery 的示例代码

// ajax.js
$.post("updatewishlist.php", 
{
    'wishlist_item':'wishlist_value'
},
function(json){
// callback function
    if(json.status==0){
        $.cookie('the_cookie', 'the_value', { expires: 7 });
    }
});

这里我用过jquery cookie plugin

// updatewishlist.php
<?php
if(user_logged_in()){
// sanitize input here
// update database with $_POST['wishlist_item']
$status = 1;
}else{
// update the cookie
// manipulate $_COOKIE super global
$status = 0;
}

// echoing json

echo json_encode(array('status' => $status));

?>

【讨论】:

  • 谢谢哥们!所以这意味着即使我使用 AJAX,我也宁愿使用 javascript 而不是 php 来检索 cookie?因为我没有在我的 AJAX 中获得更新的 cookie 值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
相关资源
最近更新 更多