我已经在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": ""}
答案 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);