2012-01-12 9 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+"]}}" 

しかし、それはより多くの構文の例外を提供します。

アイデア?

はEDIT:

これは私がPythonと一緒にJavaScriptを使用できるかどうかの問題ではない、それは私がしようとするので、私は、パイロンを使用しています

中括弧をエスケープの問題の詳細です:

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

私は私が必要とする結果が得られます。問題は、私は「ドキュメント」

+0

PythonでHTML/JavaScriptを生成していますか? yesの場合、 '$ {c.persons_by_permission ['stringID']}'は**サーバー側**で評価され、結果はクライアントに渡されます。次に、JavaScriptが評価されます。 PythonとJavaScriptを混在させることはできません。 –

答えて

3

の代わりにはJavaScriptに変数を渡す方法を見つけることができないということです私はここ数(合理的)な仮定を作ってるんだ...

  • あなたのPythonがあなたの上で実行されていますウェブサーバ
  • あなたのJavaScriptは限りPythonは、テキストを出力している懸念しているとして、あなたのクライアントに

を実行しています。ブラウザがHTML、JavaScriptなどと解釈する可能性はありません。何らかのテキストを生成してブラウザに送ります。

HTTPを使用すると、リクエストをして応答を得ることができます。応答を途中で停止して、クライアントからデータを戻すことはできません。

クライアントサイドJSからJSを生成したPythonプロセスにデータを戻すことはできません。そのプロセスは実行を終了します。

あなたがいずれかをすることができます

  • 最初の場所でクライアントにすべてのデータを送信します(その後、あなたはJSではなく、Pythonでたいビットを選択)
  • にはJavaScriptをが新しい作成してもらってサーバーへ HTTPリクエストとJSでの応答を処理する(これはアヤックスとして知られており、チュートリアルの不足が、このためにそこに存在しない)
+0

実際にデータがどこにあるのかという問題ではなく、クライアント側にすべてのデータを渡しました.Pylonsがリストに正しくアクセスできるように、必要な文字列を入力できるようにjavascriptが必要です。 – JackalopeZero

0

私はあなたが使用している実行環境を知っているが、私はありませんほぼ確実だ帽子のpythonとjavascriptは同時に実行されていません。

${c.persons_by_permission['stringID']}テンプレートディレクティブのようなものです。その場合は、ディレクティブがテンプレート処理時に処理されるため、これが機能します。あなたの他のフォームは、javascriptで文字列に評価されるjavascriptの式です。

関連する問題