python - Django - ajax 响应后模板重新加载

标签 python django ajax

我对 Django 不太熟悉,并且遇到了一个问题。我正在向 django View 发送一个 post 请求,并使用 HttpResponse 返回该函数,以便将我的模板的 div 内容更改为从我的 View 传递的值。问题是:一旦ajax响应并改变了它的div的值;页面立即重新加载。你们知道为什么吗?

Views.py

def index(request):
if request.is_ajax():
    print("request is ajax")
    details = request.POST.get('id')
    return HttpResponse(details)
else:
    return HttpResponse("Failed)

base.html

<button id="checkres">Check result</button>
<form name="testform" id="testform" method="post">
    {% csrf_token %}
    <input type="text" id="rowfield">
    <input type="submit">
</form>

 $("#testform").submit(function (event){
    $row_num = $('#rowfield').val()
    $("#responseresult").text('checking');
    $.ajax({
        type: "POST",
        url: "/bot",
        data: {csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(), id: $row_num},
        success: function(data){
            $("#responseresult").text(data);
            alert(data);
        }
    });
});

最佳答案

你的javascript submit 事件没有调用event.preventDefault(),这就是ajax响应后刷新的原因。将您的 JavaScript 函数更改为:

 $("#testform").submit(function (event){
    $row_num = $('#rowfield').val()
    $("#responseresult").text('checking');
    $.ajax({
        type: "POST",
        url: "/bot",
        data: {csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(), id: $row_num},
        success: function(data){
            $("#responseresult").text(data);
            alert(data);
        }
    });
    <b>event.preventDefault();</b> // prevents the page from refreshing.
});

进一步阅读 preventDefault()

关于python - Django - ajax 响应后模板重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60200655/

相关文章:

python - 属性错误: 'property' object has no attribute

python - 如何在for循环中读取这些元组并转换int类型?

python - 如何将属性添加到 Django 表单小部件的媒体字段?

javascript - 如何从 JS "in another file"访问 PHP 数组?

jquery - 使用asp.net mvc和jquery时在哪里形成html?

Python:为什么函数没有修改对象?

python - 在python中每X秒执行一个函数(带参数)

python - 如何同时运行 xmpp 进程和 django 服务器

python - 在 django 代码中获取静态文件的文件路径

jquery - 通过 AJAX 发送的列表并与 Django 中看似相同的列表进行比较返回 false