2016-01-13 4 views
0

У меня есть форма входа в систему с элементом <a>, с которым я хочу отправить запрос на отправку. Когда я отлаживаю внутренний код Django, он не видит метод запроса как POST, а скорее как GET.Элемент, не проводящий с AJAX

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

Добавить атрибут метод в форме: 'метода =«сообщение»'. – doru

+0

Не имеет смысла. Проверьте фактический запрос в сети браузера dev. Я уверен, он показывает, что POST там – charlietfl

+0

Попробуйте изменить 'type: 'POST''' method:' POST'' (хотя это не обязательно, согласно документам) – Blazemonger

ответ

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); 
      } 
     }); 
    }); 
}); 
Смежные вопросы