如何在jQuery中的页面之间传递全局变量?

时间:2015-05-20 15:32:43

标签: jquery html

我有一个显示课程列表的HTML页面(script_1.js)。这些课程是通过AJAX调用从数据库加载到数组" courses"在course.html中定义为全局变量。一旦我转到script_2.js中特定课程的页面,我希望能够将此数组传递给myFunction以保持课程的顺序并导航它们,而无需再次执行AJAX调用。

我如何传递这个全局变量或如何管理它?

3 个答案:

答案 0 :(得分:2)

解决这个问题的方法是使用cookies。

对先前堆栈溢出问题的回答非常好地解释了如何在cookie中存储javascript对象以及如何检索它们。

https://stackoverflow.com/a/11344672/1130119

答案 1 :(得分:2)

您可以使用以下选项将数据从一个页面传递到下一个页面:

  1. Cookie。在第1页的Cookie中存储一些数据。当page2加载时,它可以从cookie中读取值。

  2. 本地存储。在第1页的本地存储中存储一些数据。当page2加载时,它可以从本地存储中读取值。

  3. 服务器存储。在第1页上代表user1在服务器上存储一些数据。当page2加载时,服务器可以将user1数据放在page2或page2上,可以通过ajax从服务器请求该数据。

  4. 查询参数。当从page1加载page2时,可以在http://www.example.com/page2?arg=foo中将查询参数放在URL上,而page2可以从URL解析该查询参数它加载。

  5. 公共父框架。如果您的网页是由一个共同的来源框架而您没有更改顶级网址,而只是更改框架网址,那么您可以将全局数据存储在顶级父级,即使从第1页到第2页,也可以从框架页面访问该数据。

  6. 您经常可以将JSON用作基于字符串的存储格式,以用于更复杂的数据项(如数组)。 JSON可以放入上述任何存储选项中。

答案 2 :(得分:1)

您有几个选择:

1)如果您正在开发单页应用程序(SPA):创建一个全局变量来存储您的课程,例如: window.courses = []; //填写您的数据课程

然后当您加载页面2时,您可以访问window.courses变量

(请记住,您可以创建一个对象应用并在其中存储您需要的所有变量:window.app = {}; window.app.courses = [])

2)它对SPA或经典Web应用程序很有用:在localStorage上保存课程,您可以存储课程并在下一页中检索(如果未定义localStorage.getItem('courses'),则下载)。