如何从cookie中读取json对象

时间:2013-12-20 09:58:10

标签: javascript jquery json cookies

我使用jquery.cookie来存储我的客户端应用程序cookie,其中一些cookie包含JSON。

到目前为止这是我的剧本

trigger.on('click touchend', function () {
    var StoredSettings = $.cookie('qlToggled'),
        isToggled = 0,
        offset = -300,
        endpoint = 15,
        triggerX = $('#leftcolumn').offset().left + $('#leftcolumn').width();

    if (typeof StoredSettings !== 'undefined') {
        isToggled = StoredSettings.toggled;
        offset = StoredSettings.cOffset;
        endpoint = StoredSettings.cEndpoint;
        triggerX = StoredSettings.cTriggerX;
    }

    if (isToggled == '1') {
        offset = 0;
        endpoint = 315;
        triggerX = $('#leftcolumn').width();
        var cookieValues = { toggled: '0', cOffset: offset, cEndpoint: endpoint, cTriggerX: triggerX };
        $.cookie('qlToggled', JSON.stringify(cookieValues), { expires: 365, path: '/', json: true });
    }
    else {
        var cookieValues = { toggled: '1', cOffset: offset, cEndpoint: endpoint, cTriggerX: triggerX };
        $.cookie('qlToggled', JSON.stringify(cookieValues), { expires: 365, path: '/', json: true });
    }

    $('#leftcolumn').animate({ 'left': offset }, speeding);
    $('#content').animate({ 'margin-left': endpoint }, speeding);
    trigger.animate({ 'left': triggerX }, speeding);
});

我使用FireBug查看哪些cookie已保存,并且上述脚本中创建的cookie已成功创建,并且我尝试使用$.each(object, function(i ,e))迭代这些值以查看是否有任何问题出现并且确实存在。

我宁愿不必迭代这些值,只使用第一个if语句中的可链接代码。

我错过了什么/做错了什么?

2 个答案:

答案 0 :(得分:2)

您可以使用jQuery.parseJSON()来实现这一目标。

  

jQuery.parseJSON(JSON)

     

返回:对象

     

描述:采用格式正确的JSON字符串并返回结果   JavaScript对象。

文档:http://api.jquery.com/jQuery.parseJSON/

答案 1 :(得分:1)

与我合作

PHP代码

setcookie('message', json_encode(['body'=>'Erro meu amigo', 'type'=>'danger']));

JS代码

window.onload = function()
{
    rc = Cookie.get('message'); //rc == result cookie

    if (rc.boolean === true) {
        var data = JSON.parse(decodeURIComponent(rc.data));
        alert(data.body.replace('+', ' '));
    }
}