jquery - JQuery 与 jinja2 多种形式
问题描述
我在 html 模板中从带有 jinja2 的列表生成表单,但我不确定如何在 JQuery 中链接代码。我可以很容易地排列 ID,但在 JQuery 中我不确定如何指向活动表单,因为我的 JQuery 代码似乎依赖于指向表单的硬编码值或每个都有数百行代码的混乱代码从循环生成的表单。
这是我生成的表格:
{% set count = 1 %}
{% for chats in chats -%}
<li class="contact">
<form id="{{chats[count]['chatID']}}" method="POST" action='#'>
<div class="wrap">
<!-- get status from get request -->
<span class="contact-status online"></span>
<!-- get profile picture from get request -->
<img src="{{ url_for('static', filename='images/placeholder.png') }}" alt="" />
<div class="meta">
<!-- get contact name from get request -->
{% if current_user == chats[count]['sender'] %}
<p id="user{{count}}" class="name">{{chats[count]['recipient']}}</p>
{% else %}
<p id="user{{count}}" class="name">{{chats[count]['sender']}}</p>
{% endif %}
<!-- get last message in chat from get request -->
<p class="preview">{{chats[count]['sender']}}: {{chats[count]['data']}}</p>
<input type="submit" id="{{chats[count]['chatID']}}Sub" value="Join Room">
</div>
</div>
</form>
</li>
{% set count = count + 1 %}
{%- endfor %}
这是我使用 jQuery 的 JavaScript 代码:
$('form#contact').submit(function(event) {
if (activeRoom == null){
socket.emit('join', {room: $('#chat1').text(), username: activeUser});
console.log('joined ' + $('#user1').text());
activeRoom = $('#chat1').text();//mock value
activeUser = $('#yourUsername').text();
console.log("welcome: " + activeUser);
$("#12345Sub").prop('value', 'Leave Room');
return false;
}else{
console.log('Leaving ' + activeRoom);
socket.emit('leave', {room: activeRoom});
$('#log').append('<br>' + $('<div/>').text('Goodbye: ' + activeUser).html());
activeUser = null;
activeRoom = null;
$("#12345Sub").prop('value', 'Join Room');
$("#chatMsg").empty();
return false;
}
});
我可以将 jinja2 传递到 .js 文件中吗?我找不到任何可靠的东西,大多数引用似乎都是针对 .html 文件中的 JQuery 的。
解决方案
事实证明,除非我用烧瓶提供 JavaScript 文件,否则我无法将 Jinja2 传递给 JavaScript jQuery。我确实决定使用我的 Socket.io 连接从后端接收我需要的数据,这是一种快速而肮脏的方法,它并不理想,但它可以工作。更好的方法是在页面加载时向烧瓶发出 ajax 请求。尽管如果其他人正在寻找方法,第三种但不太理想的方法是在 .js 文件可以访问的 .html 模板上运行一些 JavaScript。
推荐阅读
- angularjs - 如何访问会话变量,它是角度js中的对象数组
- elasticsearch - 如何在kibana中查看日志
- c# - 在 OIDC 身份验证期间获取关联失败异常
- scala - 在 Scala 中展平嵌套对象
- php - 在 Laravel 中是否有“验证后进行身份验证”的正确方法?
- rails-activestorage - Rails 5.2.0 images.attach 导致 InvalidSignature 错误
- libreoffice-calc - 通过“通用数据有效性表”连接两个单元格?
- python - 简单链接表所需的 SQLAlchemy group_by() 求和帮助
- c# - 如何在c#中的xml之后添加数据并在之后读取xml?
- python - Python多线程产生n个并发线程