【问题标题】:Show content based on user selection根据用户选择显示内容
【发布时间】:2011-07-06 20:54:09
【问题描述】:

我现在正在建立一个网站。

在布局上有不同国家的 3 个标志。

我想知道如何根据用户选择的内容显示内容,并在他们每次返回网站时保留该选择。

很明显,当他们第一次访问该站点时,默认的英文将被显示,但一旦他们点击一个标志,它就会改变。

我将不得不使用 javascript 和 cookie,我一直在环顾四周,似乎找不到任何示例,我想知道是否有人可以告诉我如何去做。

谢谢

【问题讨论】:

  • 网站是仅使用 HTML 编写的,还是使用了某种后端技术(PHP、Java、Ruby)?如果是这样,则为您提供本地化选项。另外,您的评估是正确的;您需要 cookie 来存储用户的偏好,但是,您需要某种后端(或者可能是网络服务器)来使用 cookie 值来确定以哪种语言显示您的网站。

标签: javascript html cookies


【解决方案1】:

Cookie 似乎是正确的想法:

http://www.google.co.uk/search?q=javascript+cookies

【讨论】:

    【解决方案2】:

    (可能)只有两种方法可以做到这一点:

    1. Cookie(即大多数匿名用户)
    2. 注册并让用户登录

    根据您的需要,听起来 cookie 就足够了。

    http://www.quirksmode.org/js/cookies.html 从头到尾绝对值得一读。

    【讨论】:

      【解决方案3】:

      我给出了一个抽象的想法,说明我应该如何做到这一点。 在您编写的 html 中,放置一个 javascript 函数,当您单击标志然后提交请求时,该函数在浏览器 cookie 中设置标志的 id..

      function setCookie(flag_id) //call this when the flag is clicked
      {
          var allcookies = document.cookie;
          if(allcookies)
          {
                  document.cookie += ';flagId=' + flag_id;
          }
          else
          {
              document.cookie='flagId=' + flag_id;
          }
       /*submit the form or whatever you would like to do when the flag is clicked*/
      }
      

      这就是客户端部分。您也可以指定 cookie 的过期时间。有关详细信息,您可以参考 w3schools 网站。 cookie 将保留在浏览器中,并在每次请求时发送到服务器。

      现在,在服务器端,如果您使用的是 servlet,只需使用以下代码在 doPost 或 doGet 中获取 cookie(在您的情况下,当第一个请求来自客户端时)。

      .....
      Cookies[] cookies = request.getCookies();
      String flagId = null;
      if(cookies != null)
      {
          for(String cookie:cookies)
          {
              if(cookie.getName().equals("flagId"))
                  {
                  flagId = cookie.getValue();
              }
          }
      }
      //use the flag id to decide your content here..
      ....
      

      希望这能回答你的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 2022-12-06
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        相关资源
        最近更新 更多