您好我正在使用django框架。 ajax响应不起作用。 我尝试了如下代码。 views.py
def ForgotUsername(request):
if request.method=="POST":
email=request.POST['email']
usr=User.objects.all()
question=""
for i in usr:
if email in i.email:
id_email=i.id
que=securityquestions.objects.get(user_id=i.id)
question+=que.question
q={'question':question}
return HttpResponse(json.dumps(q),mimetype='application/json')
else:
return render(request,'registration/ForgotPassword.html')
HTML:
$("#email1").change(function()
{
var emailstring = $("#email1").val();
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if (!emailReg.test(emailstring))
{
$("#emailalert").html('<div class="alert alert-error"><button class="close" data-dismiss="alert" type="button">×</button>Not a valid Email</div>');
return false;
}
else
{
$.ajax({
type:'POST',data:{email:emailstring},
url:'/registration/ForgotUsername/',
datatype:'json',
success:function(data) {
alert("email exists");
alert(data);
$('#ques').val(data);
}
});
return true;
}
});
在此ID中,“email1”是电子邮件输入字段名称。 我的ajax响应是在一个单独的页面中打印输出。它没有返回对ajax的响应。帮我继续
答案 0 :(得分:1)
通过csrf_token。
你的AJAX响应应该是
var CSRF_TOKEN = document.getElementsByName('csrfmiddlewaretoken')[0].value
$.ajax({
type:'POST',data:{email:emailstring, csrfmiddlewaretoken: CSRF_TOKEN },
url:'/registration/ForgotUsername/',
datatype:'json',
success:function(data) {
alert("email exists");
alert(data);
$('#ques').val(data);
}
答案 1 :(得分:0)
为了快速实现这一点,不是最好的,你可以将{%csrf_token%}添加到表单中,并通过序列化将整个表单传递给你的ajax请求:
var yourForm = $("#your-form-id");
$.ajax({
type:'POST',data:yourForm.serialize(),
url:'/registration/ForgotUsername/',
datatype:'json',
success:function(data) {
alert("email exists");
alert(data);
$('#ques').val(data);
}
});
序列化会将包括csrf_token
在内的所有表单元素转换为所需的数据格式。