2012-01-12 30 views
0

我试图访问JavaScript中的Python全局变量中保存的字典结果。在JavaScript中使用Pylons全局变量(转义括号)

var selected = jQuery('.target option:selected').text() 
var list = "${c.persons_by_permission["+selected+"]}" 

如果我直接查阅字典,而不使用变量:

var list = "${c.persons_by_permission['stringID']}" 

然后代码工作。

但是,当我试图使用变量来访问字典时,我得到一个语法错误(我相信它是因为大括号)。

我试图与逃避括号:

var list = "${{c.persons_by_permission["+selected+"]}}" 

但它提供了更多的语法例外。

任何想法?

编辑:

这不是我是否可以使用Python和JavaScript在一起的问题,它更

我使用外挂架,所以如果我尝试转义大括号的问题:

alert("${c.persons_by_permission['Documents']}") 

我会得到我需要的结果。问题是,我无法找到传递变量到的JavaScript代替“文档”

+0

您是通过Python生成HTML/JavaScript吗?如果是,那么会在**服务器端**评估$ {c.persons_by_permission ['stringID']}',然后将结果传递给客户端。然后评估JavaScript。你不能以这种方式混合使用Python和JavaScript。 – 2012-01-12 11:58:21

回答

3

我做了一些(合理的)假设这里的一种方式......

  • 你的Python上运行您Web服务器
  • JavaScript是您的客户端上运行

至于Python是关注它输出文本。它并不在意浏览器可能将其解释为HTML,JavaScript或其他。它只是生成一些文本,然后将其发送到浏览器。

使用HTTP,您可以提出请求并获得响应。您无法停止响应,以便从客户端获取数据。

您无法将数据从客户端JS传递回生成JS的Python进程。该过程将完成运行。

您可以:

  • 所有的数据发送到客户端在首位(然后选择你想要的,而不是在Python中的JS位)
  • 有JavaScript通过一个 HTTP请求到服务器并处理在JS的反应(这被称为Ajax和没有教程荒在那里为这个)
+0

它不是一个真正的数据在哪里的问题,我已经把所有的数据传递给了客户端,我只需要javascript就可以输入所需的字符串,以便Pylons可以正确访问列表。 – JackalopeZero 2012-01-12 13:18:41

0

我不知道该怎么执行环境你正在使用的,但我我几乎肯定t帽子python和JavaScript没有在同一时间执行。

${c.persons_by_permission['stringID']}在我看来像是某种模板指令。如果是这样,这是有效的,因为指令是在模板处理时处理的。你的其他形式只是一个JavaScript中的表达式,它在JavaScript中以字符串形式进行评估。