2016-03-24 6 views
1

У меня есть функция питон склянки, который визуализирует на HTML-странице и отправляет динамические переменные этот HTML страница:Javascript вычисляет строки посланных из Настоя в виде целых чисел

return render_template('index.html', start_date=str(start_date), end_date=str(end_date))

На странице HTML, я использую JavaScript для читайте переменные start_date и end_date. Однако, поскольку я передаю даты в формате mm/dd/yyyy, который выглядит как 03/28/2016. Javascript вычисляет значение даты как математическое выражение и возвращает 0.0000531462585.. вместо возврата 03/28/2016.

Вот мой код JavaScript для чтения даты переменных, колба воздает index.html:

var startDate = {{ start_date }}

Как я могу убедиться, что я получаю переменные даты в виде строки вместо расчетных значений?

+1

Попробуйте выйти из '/' здесь. возможно, это сработает. –

+0

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

+0

@Mr_Green Я печатаю переменную прямо перед отправкой ее на страницу HTML и ее печать даты просто отлично. Кроме того, я 'str()' кодирует переменную прямо перед отправкой в ​​файл HTML из Колба. На стороне javascript я делаю 'var startDate = {{start_date}}' – summerNight

ответ

2
var startDate = {{ start_date }}; 

визуализируется как

var startDate = 03/28/2016; 

Это приводит к математике 3 деленное на 28, деленное на 2016, или 0.0000531462585 ..

Вы можете использовать a couple of Flask and Jinja2 filters грамотно обрабатывать строки как строки и числа как числа.

var startDate = {{ start_date|tojson|safe }}; 

будет отображаться как

var startDate = '03/28/2016'; 

или что-то вдоль этих линий.

+0

Awesome! Это работает :) – summerNight

+0

Дарн, прямо перед тем, как я закрылся как обман, и сделал другой пост с вашим ответом каноническим. – davidism

+0

Ha. Иногда бывает трудно найти старые ответы. 'tojson', кажется, дает мне больше всего подходит. – dirn

0

Похоже, вам просто нужно убедиться, что start_date - это строка. Вместо этого попробуйте var startDate = start_date.toString();.

+0

У меня есть это 'var startDate = ({{start_date}}). ToString();' и он по-прежнему печатает float. – summerNight

+0

Можете ли вы опубликовать, как вы назначаете 'start_date' в javascript-коде? – senschen

+0

'var startDate = ({{start_date}}). ToString();' – summerNight

Смежные вопросы