2012-01-12 58 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中以字符串形式進行評估。