即使我重新加载或重定向到任何其他页面,如何保留javascript变量

时间:2012-03-17 09:20:04

标签: javascript jquery drupal-7

我创建了一个图像滑块。此滑块出现在我网站的每个页面上。点击事件与图像滑块中的每个图像相关联。在点击任何图像时,存在存储与该图像相关联的数据的变量(例如艺术家姓名等,并隐藏这些字段)。

点击任何图片后,页面会被重定向到另一个页面,比如艺术家页面。在艺术家页面中,显示存储的数据。图像滑块也出现在艺术家页面中。

现在,问题是当我来到艺术家页面时,变量没有显示,因为js文件再次重新加载而且所有数据都丢失了。两个页面的Javascript文件都是相同的。事实上,我网站中的所有页面都应使用相同的js文件。但是,如果我点击任何图像,则在艺术家​​页面中显示数据。我希望数据必须保留并显示,即使它被重定向到艺术家页面。

我尝试过ready()事件,但没有帮助。怎么做?

P.S。该网站使用Drupal 7

创建

3 个答案:

答案 0 :(得分:1)

我假设您的数据未在服务器端处理。每次页面访问都不会保留JavaScript变量数据。每页都是一个新的开始。

你应该使用cookies这个。 jQuery也有cookies插件,但我还没试过(尝试问谷歌)。另一种方法是使用HTML 5 Web storage但请注意它是HTML5,这是一个非常新的功能。

基本上你想做的是:

  1. 点击项目
  2. 将数据存储在Cookie中
  3. 转到下一页
  4. 读取cookie中的数据
  5. 显示

答案 1 :(得分:0)

你不能直接。每次加载页面时都会清除Javascript状态。

选择是:

  1. 不要进行整页重新加载,看看你是否可以做一些AJAX-y来替换内容
  2. 使用会话cookie保持状态
  3. 如果浏览器支持,则使用HTML 5本地存储

答案 2 :(得分:0)

有很多方法可以实现这一点,但是,在您的情况下,一种更简单的方法可能是简单地重新检索数据。第一页如何检索变量?您是否正在使用Drupal的模板引擎将它们传递给客户端?它是通过AJAX获取原始的javascript数据吗?

如果前者为真,您可能需要修改Drupal中的模板渲染挂钩,以与第一页相同的方式获取数据,并将它们传递到新页面。

如果后者是真的,只需使用jQuery的onReady重新请求数据,如上所述。您可能仍然需要使用Drupal模块将数据公开为您的jQuery要获取的Web服务,或者您可以编写自己的php页面/ drupal模块以使用drupal的数据库抽象手动从数据库中获取数据。