在所有数据加载之前检测时区

时间:2013-11-04 22:05:08

标签: javascript jquery html ruby-on-rails ajax

我有活动页面显示日期和时间。对于登录成员,我可以抓住他们的首选时区。但对于那些未登录的用户,我想首先检测他们的笔记本电脑时区,并在当地时区显示该页面。
我在application.html.erb中使用jquery:

<% if session[:time_zone].blank? %>
    <script type="text/javascript">
        jQuery.ajax({
            data: {user_time_zone: $().get_timezone()},
            type: 'post',
            url: "/set_time_zone_session"
        })
    </script>

问题:它最后运行jQuery,所以第一次显示默认时区。刷新页面后,所有子序列请求时区都设置​​正确。 此外,在使用javascript首次请求后重新加载页面,有更好的方法吗?

额外:如果我必须重新加载页面。我添加了location.reload();在jQuery调用之后。第一次请求完成后重新加载。有没有办法在第一个请求加载之前立即重新加载页面?否则,页面加载两次会很奇怪。

1 个答案:

答案 0 :(得分:0)

我建议在客户端设置带时区的cookie 然后只需重新加载页面。这将使您的rails应用程序变得简单。

(p.s.HTTP请求可能包含一个“Date”标题,为客户提供日期+时间。您可以在生成rubyonrails输出时使用它,根本不需要ajax。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18 但更常见的情况是客户端不发送日期标题。)