2015-10-09 2 views
0

Я видел много подобных вопросов, но никто не разрешил. У меня есть запрос Ajax:django признать request.method = "POST" как "GET"

<script type="text/javascript"> 
$('#activeform').on('submit', function(event){ 
     event.preventDefault(); 
    var _self = $(this); 
    var token = $('input[name="csrfmiddlewaretoken"]').val(); 
     alert(_self.serialize()) // sanity check 
      $.ajax({ 
     type: _self.attr('method'), 
     url: _self.attr('action'), 
     data: _self.serialize(), 
     contentType: "application/x-www-form-urlencoded;charset=utf-8", 
     headers: {"X-CSRFToken": token}, 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader("Accept-Charset","utf-8"); 
      xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");}, 
       success: function(json) { 
        alert("Send!")}, 
       error: function(xhr, textStatus) { 
       alert([ xhr.status, textStatus ])}, 
      complete: function() { 
        alert("Complete")}, 
      crossDomain: false 
      }); 
return 
}); </script> 

Это один проведенные успешно, и я получил успех и полные сообща. Браузер также распознает запрос POST при отправке. Но мой взгляд django request.method == 'POST' возвращает False. У кого-нибудь есть предложения?

ответ

0

У меня был длинный путь, чтобы сделать регистрацию с помощью ajax. Таким образом, код ниже заключает сделку.

<body> 
<div class='large-3 large-offset-3 columns'> 
    <form method='POST' id="activeform" > 
    {% csrf_token %} 
    {{form}} 
    {% if error %} 
    <p><h6>{{error}}</h6></p> 
    {% endif %} 
    <input type='button' class='button' value='Зарегистрироваться' onclick="submit_by_id()"> 
    </form> 
</div> 


<script type="text/javascript"> 
    function submit_by_id() { 
     alert('Перед аджаксом'); 
     var token = $('input[name="csrfmiddlewaretoken"]').val(); 
       $.ajax({ 
      method: "POST", 
      url: "/auth/registrate/", 
      data: $('#activeform').serialize(), 
      contentType:"application/x-www-form-urlencoded; charset=UTF-8", 
      dataType:"html", 
        success: function(data, textStatus, jqXHR) { 
         //код в этом блоке выполняется при успешной отправке сообщения 
         alert("Успех" + data + 'Serialized string ' + $('#activeform').serialize())}, 
        error: function(xhr, textStatus) { 
        alert([ xhr.status, textStatus ])}, 
       complete: function() { 
         //код в этом блоке выполняется при успешной отправке сообщения 
         alert("Комплит")}, 
      headers: {"X-CSRFToken": token, "HTTP_X_REQUESTED_WITH": "XMLHttpRequest"}, 
      crossDomain: false 

     }); 
    } 
</script> 

</body> 
Смежные вопросы