【问题标题】:Using Ajax in django template to update an element在 django 模板中使用 Ajax 更新元素
【发布时间】:2017-06-07 17:50:50
【问题描述】:

所以我有一个按钮,假设将“添加”一个“项目”到列表并在同一页面上更新列表而不刷新它。

在不重定向的情况下添加项目。但是元素没有正确刷新

这是我的脚本:

<div id="list">
    {% for item in items %}
        {{ item.name }}
    {% endfor %}
</div>

<button id="add" type="submit">+</button>

<script>
    $('#add').click(function () {
        $.get('/url/page/', function (data) {
            $('#list').html(data);
        });
    });
</script>

views.py

def add_to_list(request, item_id, list_id): 
      item, created = List.objects.get_or_create(list_id=list_id, 
      item_id=item_id)
     return HttpResponse(request)

我觉得我必须在视图中添加一些东西?也许使用 json 代码?

【问题讨论】:

  • 我们也可以看看你的模板吗?
  • 好的,我刚刚添加了完整的代码。

标签: json ajax django templates


【解决方案1】:

您应该将请求的结果附加到div 元素。试试这个:

 $('#add').click(function () {
    $.get('/url/page/', function (data) {
        $('#list').append(data);
    });
});

假设您从GET 请求中收到的data 不是一个对象,而只是一个字符串。如果是对象添加data.name:

$('#list').append(data.name)

希望对你有帮助。

【讨论】:

  • 我在问题中犯了一个错误。但这是我实际做到的方式。但没用
  • @DjangoGuy 你能console.log(data) 告诉我结果吗?
  • @DjangoGuy 你确定你在做append(data),而不是html(data)?你应该在append(data)之前写这个命令
  • 我使用的是 html(data) 现在我将其更改为 append(data) 我也尝试了 append(data.name) 但仍然没有工作。
  • @DjangoGuy 请告诉我console.log(data) 的输出,你应该写在$('#list').append(data); 上面
猜你喜欢
  • 2020-08-05
  • 2017-08-14
  • 2020-01-18
  • 2019-02-05
  • 1970-01-01
  • 2017-11-16
  • 2018-11-25
  • 2013-06-05
  • 2021-03-03
相关资源
最近更新 更多