当我从模板向我的视图发出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})
如果您有表单,并单击按钮“类型提交”,则单击按钮将提交您的表单。您的字体具有event.preventDefault。这就是为什么此按钮触发两个请求的原因。
解决方案很少。最简单的两个1 preventDefault on Js2更改按钮类型,甚至用例如span []替换它