【问题标题】:Trouble with Jquery and FlaskJquery 和 Flask 的问题
【发布时间】:2019-08-14 02:49:01
【问题描述】:

我正在尝试使用 jquery 附加一个 html 元素,但烧瓶返回异常:

jinja2.exceptions.TemplateSyntaxError: 预期令牌',',得到 '静态'

字符串似乎没问题,我不知道是什么问题

<script type="text/javascript">
    $('#img_' + element.event_id).append('<img src="' + '{{ url_for(' + "'static', filename=" + element.face_cap + ') }}" width="120" alt="image"');


</script>

【问题讨论】:

  • 您是否尝试在 jinja 中评估 javascript?元素是 javascript 变量吗?
  • 是的,是一个json对象值:这里是所有代码:$.ajax({ url: '/post_browserId', dataType: 'json', type: 'post', contentType: 'application/ json',数据:JSON.stringify(res),processData:false,成功:function(response){ response.forEach(element => {
  • 问题在于将字符串解析为html

标签: javascript python jquery flask jinja2


【解决方案1】:

修改代码如下:

<script type="text/javascript">
    $('#img_' + element.event_id).append('<img src="{{ url_for('static', filename=element.face_cap ) }}" width="120" alt="image"');
</script>

请注意,您无法在 jinja2 中评估 Javascript 对象。 element 对象必须是传入模板的有效 python 对象。

见How to pass Javascript variable to macros in jinja2 template

编辑: 为了解决您的问题,您可以将默认 img 路径传递给 Javascript 代码,并在 Javascript 代码中创建文件 url。

<script type="text/javascript">
    $('#img_' + element.event_id).append('<img src="{{ url_for('static', filename='/img' ) }}/' + element.face_cap +' width="120" alt="image"');
</script>

【讨论】:

  • 返回 jinja2.exceptions.UndefinedError: 'element' is undefined
  • 这就是我发布通知的原因。假设元素是一个 javascript 对象,你不能把它放在 url_for 中:{{ url_for('static', filename=element.face_cap ) }} 这是错误的。
  • 我试过了: $('#img_' + element.event_id).append('
  • 查看我为答案提供的链接。传入 url_for 的每个变量都必须是 python 对象。 url_for 是 jinja2 模板的一部分,它是一个 python 东西,必须在后端运行。 javascript 在前端运行,因此 python 不知道该对象
  • 奇怪的是,整个代码使用 javascript 对象工作。参见:$('#' + element.event_id).append("
    " + element.ts + "
    ");这很好用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2012-11-16
  • 2013-08-10
  • 2014-09-14
  • 2021-07-24
  • 2021-09-19
  • 2016-11-20
相关资源
最近更新 更多