使用jQuery访问会话变量

使用jQuery访问会话变量,jquery,ruby-on-rails,session-variables,Jquery,Ruby On Rails,Session Variables,我需要在rails中呈现HTML元素,这取决于是否设置了会话变量。可以这样做吗?您不能从客户端访问任何服务器端变量。基本上,您可以在javascript变量中呈现会话变量值,并在jquery的客户端使用它。一个帮助您读写cookie的小型库 var cookieHelper = (function () { return { createCookie: function (name, value, days) { var expires = "";

我需要在rails中呈现HTML元素,这取决于是否设置了会话变量。可以这样做吗?

您不能从客户端访问任何服务器端变量。基本上,您可以在javascript变量中呈现会话变量值,并在jquery的客户端使用它。

一个帮助您读写cookie的小型库

var cookieHelper = (function () {
    return {
        createCookie: function (name, value, days) {
            var expires = "";
            if (days) {
                var date = new Date();
                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                expires = "; expires=" + date.toGMTString();
            }
            document.cookie = name + "=" + value + expires + "; path=/";
        },
        writeSessionCookie: function (cookieName, cookieValue) {
            document.cookie = cookieName + "=" + cookieValue + "; path=/";
        },
        readCookie: function (name) {
            var nameEq = name + "=";
            var ca = document.cookie.split(';');
            var i;

            for (i = 0; i < ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }
                if (c.indexOf(nameEq) === 0) { return c.substring(nameEq.length, c.length); }
            }

            return null;
        },
        deleteCookie: function (name) {
            this.createCookie(name, null, -1);
        },
        testSessionCookieEnabled : function() {
           document.cookie ="testSessionCookie=Enabled";
            if (getCookieValue ("testSessionCookie")=="Enabled")
              return true 
            else
              return false;
        }
    };
 }());

您可以在rails中呈现js视图,并将会话变量放在其中。有关mo信息,请参见会话是服务器端,我不是rails开发人员,但在asp.net mvc中,我进行了一个ajax调用,获取会话值并将其返回给客户端。这只是一个想法。

如果您使用rails 3并使用cookie store存储会话变量,那么您应该能够使用JS访问会话变量,就像访问典型的cookie一样。

会话是服务器端的,我不是rails开发人员,但在asp.NETMVC中,我进行了一个ajax调用,获取会话值并将其返回给客户端。只是一个想法,这似乎合乎逻辑。实际上,我正在尝试实现,并认为我可以使用会话变量保存状态,然后在页面加载时读取这些变量,然后执行必要的操作。你能看看那个帖子吗?谢谢。我试过了,效果很好!非常感谢。我将添加它作为答案,如果它解决了您的问题,请将其标记为答案。我想我想说的是cookie变量,而不是会话变量。实际上,我正在尝试实现,并认为我可以使用会话变量保存状态,然后在页面加载时读取这些变量,然后执行必要的操作。你能看看那个帖子吗?谢谢通过查看文档,您将通过设置获取和终止这些Cookies轻松了解其余内容在rails中,会话是一个具有唯一ID哈希的cookie。
if(cookieHelper.testSessionCookieEnabled)
{
  cookieHelper.writeSessionCookie("test","session");
}
else
{
  //do something
}

var cookieValue=cookieHelper.readCookie("test");