Я пытаюсь создать регистрационную форму для django 1.10, и она почти отлично работает, за исключением того, что когда я делаю сообщение, работает нормально, но перенаправляется на URL-адрес сообщения ajax и в инспекторе Chrome. Я вижу что-то вроде этого: ресурс, интерпретируемый как документ, но переносимый с помощью приложения типа MIME/json: «http://127.0.0.1:8500/reg/».Django json, Resource интерпретируется как Документ, но передается с приложением типа MIME/json:
А затем отображает мой ответ JSON: { «рег»: «OK», «электронная почта»: «[email protected]»}
Из-за этого нежелательного перенаправлением я не могу справиться отклика от страницы, у меня есть моя форма.
Это мой Аякс:
$('#botonregistro').on('submit', function(e) {
e.preventDefault();
console.log("reg!") // sanity check
$.ajax({
url: "/reg/", // the endpoint
type: "POST", // http method
data: {
username: $('#id_username').val(),
password: $('#id_password').val(),
email: $('#id_email').val(),
sexo: $('#id_sexo').val(),
interes: $('#id_interes').val()
}, // data sent with the post request
success: function(response) {
$('.home-reg-form').empty();
console.log(json);
console.log("success");
},
error: function(response) {
$('.home-reg-form').empty();
$('.home-reg-form').html("<div class='alert-box alert radius' data-alert>Oops! We have encountered an error: <a href='#' class='close'>×</a></div>"); // add the error to the dom
}
});
});
И это мой вид из почтового URL:
def reg_ajax(request):
if request.method == 'POST':
uname = request.POST.get('username')
email = request.POST.get('email')
psw = request.POST.get('password')
user = User.objects.create_user(username=uname, email=email, password=psw)
response = JsonResponse({'reg':'ok', 'email': email})
return response
else:
response = JsonResponse({'reg':'error'})
return response
Я считаю, что код хорошо, но, возможно, я что-то пропустил.
Попробуйте передать 'dataType: 'json''' '.ajax()'. Помогает ли это? –
Спасибо за ответ, уже пробовал это, но безуспешно :( –
Как быстро исправить, попробуйте изменить тип ответа на простой текст. –