Django Ajax:针对单个ajax GET请求触发的多个请求

时间:2019-11-06 16:10:24

标签: jquery html django ajax python-3.x

当我从模板向我的视图发出ajax获取请求时,我遇到一个奇怪的问题。当我单击“历史记录”按钮时,我可以在日志中看到ajax已将请求发送到两个不同的URL。

控制台日志:

[06/Nov/2019 21:22:38] "GET /NewHandBook/UserHistory?uname=pvivek 
HTTP/1.1" 200 4306
[06/Nov/2019 21:22:38] "GET /NewHandBook/Home? HTTP/1.1" 200 9980

请求应该只发送到/NewHandBook/UserHistory,但不确定为什么到达/NewHandBook/Home

我的ajax调用:

<form id="UserHistory">

        <button type="submit" class="btn btn-primary">
            <i class="fas fa-history"></i> History
        </button>
    </form>
    $(document).on('submit', '#UserHistory', function (e) {
                    console.log("clicked history button");
                    console.log(getCookie("userName"));
                    $.ajax({
                        type: 'GET',
                        url: '/NewHandBook/UserHistory',
                        data: {
                            'uname': getCookie("userName")
                        },
                        success: function (data) {
                            console.log("executed userHistory")
                            console.log(getCookie("userName"));
                        }
                    })
                })

Urls.py

url('UserHistory', views.history)

views.py

def history(request):
    uname=request.GET.get('uname')
    result = UserQueryHistory.objects.filter(User_name=uname)
    return render(request, 'History/DbHistory.html', {"result": result})

1 个答案:

答案 0 :(得分:0)

如果您有表格并单击“输入类型”按钮,则单击按钮将提交您的表格。您的字体带有event.preventDefault。这就是为什么此按钮触发两个请求的原因。

有一些解决方案。最简单的两个是:

  1. Js上的preventDefault
  2. 更改按钮类型,甚至用例如span代替