我有一个带有<a>
元素的登录表单,我想发布一个帖子请求。当我调试后端Django代码时,它不会将请求方法看作POST而是作为GET。
HTML
<form id="login">
{% csrf_token %}
{{login_form.as_p}}
<a id="post" href="">post</a>
</form>
的JavaScript
$('document').ready(function(){
$('a#post').click(function(){
$.ajax({
type: 'POST',
url: '#',
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
dataType: 'json',
success: function(data){
console.log(data);
}
})
})
})
为什么会这样?
答案 0 :(得分:1)
您必须阻止锚点的默认操作,只会在href
属性为空时重新加载页面
$(document).ready(function(){
$('#post').on('click', function(e) {
e.preventDefault();
$.ajax({
type : 'POST',
url : window.location.href,
data : {csrfmiddlewaretoken: '{{ csrf_token }}' },
dataType: 'json',
success: function(data){
console.log(data);
}
});
});
});