更新已渲染的django模板中的列表项
Update list item in rendered django template
在我的模板中,我从服务器检索了列表:
{% for elem in event_list %}
<li id="item{{forloop.counter}}">
<a>...</a>
<button onclick="fetch({{elem.id}})">...</button>
{{ elem.id }}
{{ elem.name }}
</li>
{% endfor %}
当我单击按钮时,我调用服务器来获取一些新信息,并希望用新检索到的信息更新特定的列表项。我怎么能这么做呢?
我的javascript代码如下:
function fetch(elem_id){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
resp = JSON.parse(xhr.responseText);
document.getElementById("item"+elem_id).innerHTML = resp;
}
};
url = SERVER_URL
xhr.open('GET', url, true);
xhr.send();
}
我让服务器返回一个字典,然后在javascript中被视为JSON对象,但我不能成功更新列表项。
感谢您的帮助
我认为这里的问题是,你试图返回一个列表,然后用django模板循环构建列表。你可能会跳过一些障碍,并通过做一些jquery条件来实现这一点,在响应返回后,在页面中包含另一个HTML文件…但不管怎样,你都必须使用jquery所以我不确定为什么这种方法会更干净。
要做到这一点,我会在你的按钮上使用一个AJAX处理程序来运行django函数,并返回一个json响应,其中包含列表,你可以使用jquery来构建你的ul。在Django:def list_return_function(request):
//logic
updated_list = [...]
response_data = json.dumps({'list_data':updated_list)})
return HttpResponse(response_data, content_type='application/json')
Jquery处理程序:$( button_selector ).on('click', function() {
//some logic maybe
old_list = [...]
$.ajax({
url: "/site_url/django_function_url/",
type: "POST",
data: {data: old_list,},
success:function(data) {
//your returned python list
new_list = data['list_data']
//Now, loop through the new_list and append these items wrapped in <li> tags to your ul.
}
});
});
这是非常简单的,但也许你会明白的。如果这真的很糟糕,没有帮助,让我知道为什么,我会尽量让它更清楚。
所以这取决于你的python函数返回什么你想用jquery做什么。它是返回完整的新列表,还是只返回需要更新的新项。如果它返回完整的新列表,我将清除html并重新构建它。但是我添加了基本的
相关文章:
- 在模板中为Django表单分离媒体类对象的JS和CSS列表输出
- 如何使用Django列表作为Django模板中的javascript变量
- 使用jquery和javascript的Django for循环列表
- 在 django 中获取列表值
- Django:自动更新下拉列表会导致“form.is_valid()”返回false
- Django - 根据下拉列表更改发送表单的路由
- Django和Javascript:依赖下拉列表不起作用
- 有没有一种方法可以用javascript变量对Django/Jinja列表进行索引
- 使用Django模板(列表和dicts)将Python数据结构转换为js数据结构
- 删除django中列表中项目的引号以获得高图表
- django select2插件中所有选定项目的列表
- 更新已渲染的django模板中的列表项
- 在渲染的html页面上使用Javascript中的Django渲染列表
- 通过ajax从django的queryset中填充下拉列表
- 通过Ajax向Django发送一个复选框列表
- Django-Angular,可以返回字符串,但不能返回对象或列表
- Django下拉列表onchange提交
- Django Rest框架的许多相关字段- Javascript正确格式的int列表
- 通过JS在Django模板中遍历对象的分页列表
- javascript中的Django列表项