在js里面使用jinjia2的变量(后台传到前台的变量)

在Linux系统和Python环境下,使用Jinjia2模板引擎生成HTML页面时,由于数据量大,不适合在循环内进行复杂处理。因此,选择在JavaScript中声明一个数组,用于在Jinjia2的for循环内部保存处理过的数据。当循环完成后,通过按钮点击事件触发JS函数,对数组内的数据进行二次处理,从而避免前端卡顿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统:linux
编程语言:python
问题产生的原因:html前端的页面是靠后台传出的数据的多少和值进行显示的(用{% for xxx in result%}循环产生)但是因为数据量巨大不能再产生的时候处理想要的数据(因为会很卡),所以把处理的js写在for循环的外面
但是问题就来了,后台产生的循环数据,在for外面可是不能访问的,但是for循环里面有会稍微处理一下数据所以,在最上面js里面声明一个该页面的数组grouparray=[] 用于在循环的时候把数据保存起来
最后再通过按钮点击事件,调取数组的值,进行二次处理

{% extends "base.html" %}
{% block title %}数据中心{% endblock %}
{% block css %}
{% include "prodata/css.html" %}
{% endblock %}

{% block content %}
<!-- Row -->
<script src="static/vendors/bower_components/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
    grouparray=[]
</script>

    <thead>
    <button id="btndown">导出没有图片的sku</button>
    <script type="text/javascript">
        $(function(){
            $('#btndown').click(function(){
                for (var i = 0; i < grouparray.length; i++) {
                    var url="/static/images/"+grouparray[i]
                    $.ajax(url, {
                         type: 'get', 
                         async:false,//取消ajax的异步实现
                         timeout: 1000,
                         success: function() {
                         },
                         error: function() {
                            var jsonString = JSON.stringify(grouparray);
                            $.ajax({
                                url:"/nopicturename",
                                data:{"name":jsonString},
                                async:true,//取消ajax的异步实现
                                timeout: 1000,
                                success:function(){     
                                },
                                error:function(){
                                      alert("导出数据失败")
                                }
                            })
                         }
                    });
                }     
            })
        })
    </script>
    </thead>
    <tbody>
    <!-- 这里就是当页面加载的同时复制数据到数组 -->
    {% for sale in sales %}
    <script type="text/javascript">
            grouparray.push('{{sale}}');
    </script>
    <tr>
        <td><!-- 显示加载图片区 -->                                            
              <img id ="{{sale}}" data_src="/static/images/{{ sale }}.jpg" alt="没有图片" width="80">
             <script type="text/javascript">
                $(function(){
                    $('#{{ sale }}').hover(function(){
                        $(this).attr("src",$(this).attr('data_src'))
                    });

                }) 
            </script>   
        </td>
        {% endfor %}
    </tr>
{% endfor %}

<!-- /Row -->

{% endblock %   }

{% block js %}
{% include "prodata/js.html" %}
{% endblock %}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值