2012-03-17 56 views
1

我已经创建了图像滑块。此滑块出现在我网站的每个页面上。有一个点击事件与图像滑块中的每个图像相关联。在点击任何图像时,会存储与该图像相关的数据的变量(例如,艺术家姓名等,并且这些字段被隐藏)。如何保留JavaScript变量,即使我重新加载或重定向到任何其他页面

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

现在,问题是当我来艺术家页面的变量不显示,因为js文件再次重新加载和所有数据都丢失。这两个页面的Javascript文件是相同的。事实上,我网站上的所有页面都应该使用相同的js文件。但是,如果我单击任何图像,就会进入艺术家页面,然后显示数据。我希望数据必须保留并显示,即使它被重定向到艺术家页面。

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

P.S.该网站是使用Drupal 7创建的

+0

尝试将数据作为参数传递给新页面,然后在页面加载时将其分配给您的javascript变量 – 2012-03-17 09:24:35

回答

1

我假设你的数据没有在服务器端处理。每个页面访问都不会保留JavaScript变量数据。这对每一页都是一个全新的开始。

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

基本上你想要做的事情是:

  1. 点击项目
  2. 在饼干
  3. 存储数据
  4. 转到下一页
  5. 读取cookie的
  6. 显示
+0

作为猜测,我相信数据正在服务器端进行处理,因为作者提到Drupal 7。隐藏的表单字段也向我暗示传递数据的Drupal式的方式..但我想从OP的一些澄清将有助于 – badunk 2012-03-17 09:33:53

+0

感谢“饼干”的想法:) – subhojit777 2012-03-17 11:21:12

0
数据

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

的选择是:

  1. 而不是做一个完整的页面重载的,看看你能不能做一些AJAX-Y更换内容
  2. 使用会话cookie来保持状态
  3. 使用HTML 5本地存储如果浏览器支持它
0

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

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

如果后者是真的,只需使用jQuery的onReady重新请求数据,就像您提到的那样。您可能仍然需要使用Drupal模块将数据公开为jQuery提供的web服务,或者您可以编写自己的php page/drupal模块,以便使用drupal的数据库抽象手动从数据库中获取数据。

相关问题