我看到很多类似的问题,但没有人解决过。 我有ajax请求:
<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>
这一次成功完成,我获得了成功并完成了msgs。 浏览器还会在提交时识别POST请求。但是我的django观点 request.method ==&#39; POST&#39;返回False。有人有建议吗?
答案 0 :(得分: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>