Неперехваченная синтаксическая ошибка Chrome: неожиданный токен < шаблон Jinja

#javascript #html #jinja2

#javascript #HTML #jinja2

Вопрос:

Я использую шаблоны jinja. Вызов функции с объектом в качестве параметра. Это вызывающий абонент.

 <input class="btn btn-primary center-block" onclick=execute( {{ x }} ) type="submit" id= 'receive-btn' value="Receive" >
  

Когда код фактически вызывается, именно так передается объект.

 <input class="btn btn-primary center-block" onclick=execute((amp;<Orderitem uamp;#39;Lenovo Vibe K5 (Gold, 16GB)amp;#39;amp;>, datetime.datetime(2016, 9, 12, 16, 26, 47), uamp;#39; 402-7679899-5460354amp;#39;, uamp;#39;Lenovo Vibe K5 (Gold, 16GB)amp;#39;, 7000.0, 0.0, 1L, uamp;#39;9963802143amp;#39;, uamp;#39;nagarajuamp;#39;, 0.0, 0.0, UUID(amp;#39;377245de-ebaa-4fa9-ad70-8fa28ad602aeamp;#39;))) type="submit" id= 'receive-btn' value="Receive" >
  

Мне кажется, что объект в порядке, но я получаю его ошибку:

 Uncaught SyntaxError: Unexpected token <
  

Есть ли причина, по которой это происходит?
Я новичок как в Javascript, так и в Jinja. В общем, как передать этот объект в функцию javascript?

Ответ №1:

Похоже, вы пытаетесь передать строку execute функции в JavaScript.

Строковые литералы в JavaScript должны быть окружены " символом или ' .

Поскольку вы этого не сделали, первый символ вашего data ( < ) обрабатывается как оператор less than , который не допускается в качестве первого символа внутри () вызывающей функции.

Заключите ваши строки в кавычки.

(Вам также необходимо указывать значения ваших атрибутов HTML, если они содержат пробелы и некоторые другие символы).

 onclick="execute(amp;quot;{{ x }}amp;quot;)"
  

ПРИМЕЧАНИЕ: это приведет к сбою, если ваши данные когда-либо будут содержать " символы. Посмотрите на преобразование x в JSON, прежде чем помещать его в шаблон.

Ответ №2:

Вероятно, вокруг атрибута onclick должны быть кавычки.