未使用AJAX发布的元素

时间:2016-01-13 17:06:52

标签: javascript jquery ajax django

我有一个带有<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);
            }
        })
    })
})

为什么会这样?

1 个答案:

答案 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);
            }
        });
    });
});