Использование глобальных переменных Pylons с JavaScript (без скобок) - PullRequest
0 голосов
/ 12 января 2012

Я пытаюсь получить доступ к результату в словаре, содержащемся в глобальной переменной Python в JavaScript.

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']}")

Я получу результаты, которые мне нужны. Проблема в том, что я не могу найти способ передачи переменной в javascript вместо «Documents»

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Я делаю несколько (разумных) предположений здесь ...

  • Ваш Python работает на вашем веб-сервере
  • Ваш JavaScript работает на вашем клиенте

Что касается Python, он выводит текст. Неважно, что браузер может интерпретировать его как HTML, JavaScript или что-то еще. Он просто генерирует некоторый текст и затем отправляет его в браузер.

С помощью HTTP вы можете сделать запрос и получить ответ. Вы не можете остановить ответ на полпути, чтобы получить данные от клиента.

Вы не можете передавать данные из клиентской JS обратно в процесс Python, который сгенерировал JS. Этот процесс завершится.

Вы можете либо:

  • Сначала отправьте все данные клиенту (а затем выберите нужные биты в JS, а не в Python)
  • Пусть JavaScript сделает новый HTTP-запрос к серверу и обработает ответ в JS (это называется Ajax, и для этого нет недостатка в учебниках)
0 голосов
/ 12 января 2012

Я не знаю, какую среду выполнения вы используете, но я почти уверен, что python и javascript не выполняются одновременно.

${c.persons_by_permission['stringID']} выглядит для меня как своего рода директива шаблона,Если так, это работает, потому что директива обрабатывается во время обработки шаблона.Ваша другая форма - это просто выражение в javascript, которое преобразуется в javascript в строку.

...