在Django模板上,标签的AJAX JSON响应不会刷新

时间:2019-04-27 08:25:33

标签: javascript json ajax django

我已经在views.py中构建了一个视图,当用户按下按钮时该视图返回JSON。该页面无需重新加载即可更新简单的html div(last_bid,信用,消息),但我有一些{%for%}标记,尽管JSON响应已使用其他数据进行了更新,但这些标记不会刷新。

template.html脚本

<script>
$('#bid').on('submit', function(event){
    event.preventDefault();

    $.ajax({
        method: 'POST',
        url: '{% some url %}',
        datatype: 'json',
        data: {
            some data
        },
        success: function(data) {
            $('#last-bid').html(data.last_bid);
            $('#credits').html(data.credits);
            $('#message').html(data.message);
            $('#registered_players').html(data.registered_players);              
        }
    });
});

template.html

<div id="registered_players">
{% for i in registered_players %}
    {{ i.auction_player__user__username }}
{% endfor %}
</div>

JSON

{"registered_players": [{"auction_player__user__username": "admin"}, {"auction_player__user__username": "minos"}], "last_bid": "8.10", "credits": 612, "message": ""}

2 个答案:

答案 0 :(得分:0)

而不是将div定位为“ registered_players”。您需要遍历JSON数据并替换每个播放器,或者需要删除旧播放器html并添加新的HTML。

请通过检查html页面来提供HTML,以获得更清晰的答案。

答案 1 :(得分:0)

谢谢大家的帮助。通过遍历JSON响应来解决此问题。

var player_list = "<ul>";
            for (var i=0; i< data.registered_players.length; i++){ 
               player_list += "<li>" + data.registered_players[i].auction_player__user__username + "</li>";
             }
            player_list += "</ul>"                
            $('#registered_players').html(player_list);