javascript - 动态创建 html div jinja2 和 ajax

标签 javascript jquery python ajax flask

所以我有这个滚动函数,当它到达页面底部时发送一个 ajax 请求,ajax 函数检索 JSON 中的一些数据,我想将这些数据填充到一个 div 中。是否可以使用 jinja2 来做到这一点?目前我只是在玩弄并用 js 创建一个 div(不是我想要的)。

<script type="text/javascript">
    $(document).ready(function() {
        var start = $(".boxybox").length;
        var stop = start + 3;

        var create_div = function() {
            if ($(window).scrollTop() === $(document).height() - $(window).height()) {
              $.get('/more', {
                  start: start,
                  stop: stop
                  }, function(feed) {
                    var feed = JSON.parse(feed);
                    console.log(feed[0].limit);
                    var div = $("<div></div>").addClass("boxybox").attr("id", feed[0].limit);
                    $('.feed').append(div);
                  });
            }
        }
        var throttled = _.throttle(create_div, 500);
        $(window).scroll(throttled);
    });
</script>

这样就可以了,但如果我可以使用 jinja2 和纯 HTML 动态创建这个 div,我会很感兴趣?

我想到了 3 个选项来做到这一点,第一个是我展示的,第二个是创建 HTML 服务器端并以 JSON 格式返回,第三个是使用 jinja2 并填充 div?

最佳答案

好吧,这有点复杂,但我希望我理解正确。

是的,您可以使用 Jinja2 通过 ajax 创建动态内容。

简单地说,创建一个新的 HTML 文件并向其添加 jinja 模板(就像您所做的那样),然后将请求发送到一个 View 函数views 文件中并使该函数 return render_template('path/to/dynamic_data.html', new_fetched_data=new_fetched_data) 然后通过 jQuery 附加结果。

废话不多说,写点代码吧。

示例代码

动态数据.html

{% block body %}
    <div class="new_dynamic_data">
        {% if new_fetched_data %}
             <p> {{ new_fetched_data }} </p>
             # Do whatever with the data
        {% endif %}
    </div>
{% endblock %}

View .py

@app.route('/more/', methods=['POST'])
def _more():
    new_fetched_data = fetch_data() # Data fetch function through sqlalchemy
    return jsonify('fetched_data', render_template('dynamic_data.html', new_fetched_data=new_fetched_data))

应用程序.js

#Function to handle scrolling
$.ajax({
    url: "/more/",
    type: "POST",
    dataType: "json",
    success: function(data){
         $(html).append(data);
    }
});

如果你还有不明白的,可以留言,我会回复。

关于javascript - 动态创建 html div jinja2 和 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40701973/

相关文章:

javascript - 从 JavaScript 字符串中删除空格,但不是所有空格

javascript - 如何在 `onclick`函数中使用元素id作为JS函数参数?

Python 模块的对象不可调用

python - 多函数参数 - learnpython.org

javascript - 如何在 Phoenix 中使用 d3.js?

Javascript 正则表达式不匹配

javascript - 第二次点击时触发动画

python - 在同一台机器上安装不同版本的 Python 和 Anaconda

javascript - 加载 ="lazy"但对于 html5 视频

javascript - 使用 JQuery/Javascript 将文本插入到 html div 表的特定单元格中?