как поместить массив в атрибут, чтобы быть доступным для чтения с помощью javascript, используя jinja2 и google app engine

0

Я пытаюсь поместить массив с сервера на веб-страницу через jinja2 в google-движке Google, но, похоже, я не могу его получить, поэтому он читается кодом jQuery. Я довольно новый - впервые я пробовал что-то вроде этого.

Мой код python выглядит следующим образом (с некоторым удаленным кодом для краткости):

import json
jinja2_ENVIRONMENT.filters['json'] = json.dumps

filterList = ["context","home"]
template_values = {
"filterList" : filterList
}

который я передаю на вывод, используя:

self.response.write(template.render(template_values))

атрибут в моем html-шаблоне выглядит так:

filterlist="{{ filterList|json }}"

Моя проблема в том, что массив не читается javascript в браузере. В инспекторе элементов это выглядит так:

filterlist="["context", "home"]"

в то время как для JSON я ДУМАЮ, что хочу что-то вроде "[" context "," home "], чтобы он мог быть прочитан моим кодом jQuery. [edit: это читаемо, но как строка, а не как массив... Я бы предпочел не писать парсер, если мне не нужно].

var filterList = $("body").attr("filterlist");

Спасибо за помощь.

Теги:
google-app-engine

2 ответа

0
Лучший ответ

Я попробовал все, что было предложено выше, но все еще имел некоторые проблемы. В конце концов, я смог найти решение, используя метод JSON.parse(). Добавив следующую строку в код jQuery:

var filterList = JSON.parse('{"filterList":'+$tasklist.attr("filterlist")+'}');

Мне удалось получить доступ к массиву как filterList.filterList.

Я не уверен, где я ошибся, но я подозреваю, что я не правильно использую библиотеку python jinja2. Тем не менее, это решение сработало для меня.

2

Вы уже передаете JSON в шаблон. Поэтому просто выведите его, используя:

filterlist={{ filterList|safe }};
  • 0
    Спасибо! Когда я это делаю, атрибут HTML появляется в виде: <body filterlist = "['context'," 'home'];>, который все еще не читается как массив моим кодом jQuery ... он читает его как строку.
  • 0
    Как насчет filterlist={{ filterList|json|safe }}; ?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню