Django Ajax:多个请求被单个ajax GET请求触发

问题描述 投票:0回答:1

当我从模板向我的视图发出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})
jquery html django ajax python-3.x
1个回答
0
投票

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

解决方案很少。最简单的两个1 preventDefault on Js2更改按钮类型,甚至用例如span []替换它

热门问题
推荐问题
最新问题