使用PHP通过AJAX获取新的更新COOKIE值

时间:2012-05-28 04:33:38

标签: php ajax cookies

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

我正在网上商店创建一个愿望清单,如果用户登录,愿望清单项目将保存在数据库中,未登录用户的愿望清单将通过cookie保存,我正在使用AJAX愿望清单功能。除了在第一个ajax请求中没有更新cookie之外,一切顺利。

这是我的第一步(ajax):

  1. 调用ajax请求以更新心愿单
  2. 根据新cookie重新加载心愿单模板
  3. 上述步骤并未自动更新心愿单模板$_COOKIE[]需要页面刷新。

    这是我更新的步骤(ajax)

    1. 调用ajax请求以更新心愿单
    2. 调用另一个ajax请求重新加载心愿单模板
    3. 上面的代码解决了这个问题,(调用第2步只是刷新$_cookie值。)但是需要两个ajax请求才能更新wishlist,这需要一点时间才能工作。我敢肯定,这不是最好的解决方案。我知道这是一个更好的解决方案。

      帮助请:)

      由于

1 个答案:

答案 0 :(得分:1)

Cookie可以仅由设置。当您使用时,我认为您可以在没有任何页面刷新的情况下处理

这是你应该实现的逻辑。

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

    使用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));
    
    ?>