访问单页应用程序中的会话变量

时间:2012-10-26 12:04:04

标签: javascript mongodb backbone.js lithium

我正在开发一个简单的(!)2页应用程序。

第1页:从用户那里获取有关该计划正在为他的旅行创建的基本信息 - 旅行名称,日期等。

单击Save后,将在MongoDB上使用Lithium PHP中的控制器为该程序创建一个条目。生成一个id并将其作为URL中的参数传递给第2页,如下所示:

$this->redirect('/iplans/save/' . $program_id . '/' . $program_name);

第2页:是使用许多Backbone脚本的单页应用程序(托管在单独的js文件中),并允许用户添加其程序的日期详细信息。没有js脚本在线。

我希望在按下Finish时将骨干集合保存在服务器端,但是需要使用此集合发送program_id,以便在MongoDB中更新正确的程序。

问题:

  1. 如何确保来自锂/ php服务器端的program_id被自己的js文件(非内联)中的主干javascripts选中
  2. 除了Controller :: redirect还有哪些其他选项可用于将控件从第1页转发到第2页?
  3. 可以使用哪些其他选项来传递program_id以及骨干/ JS层可能需要的任何其他值。是否有传递此类物品的标准方式?

2 个答案:

答案 0 :(得分:1)

  1. 有几种选择:

    1. 从window.location.href
    2. 中解析出program_id
    3. 在锂视图中动态创建一些javascript。它可以很简单:
      "<script> myvars = " . json_encode(array(...)) . "<script>"
      然后你可以从javascript中读取变量。

    4. 从锂动态创建onDomRady函数

  2. 这是一个好方法。也就是说,一个页面显示表单并从表单接收数据,一个页面显示一些数据。它们彼此无关,它将使代码易于理解。

  3. 您可以使用AJAX / JSON向/从服务器发送/接收数据。另见答案1b,1c

答案 1 :(得分:0)

如果它只是一个要写入会话的变量,您需要在单页应用程序中访问,只需创建一个返回当前会话信息的控制器(即SessionsController),然后打开内容协商。

然后你可以随时获得你需要的任何钥匙。