【问题标题】:ajax in django success function is not workingdjango成功功能中的ajax不起作用
【发布时间】:2020-04-29 03:02:19
【问题描述】:

我是 ajax 和 Django 的新手。我尝试将 ajax 放入我的代码中,以在注册页面中检查是否某个用户已经拥有一封电子邮件,然后该电子邮件不能用于新用户并禁用按钮,否则如果电子邮件不存在,则可以创建用户.

ajaxCode


$(document).on('blur', 'input[name="email"]', function(){
   $.ajax({
    type:'POST',
    url:'/stock/checkemail/',
    data:{
        email:$("#email").val(),
        csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
    },
    success:function(){
        $('input[type="submit"]').attr('disabled', 'true')
    },
    failure:function(){
        $('input[type="submit"]').removeAttr('disabled');
    }
   })
});

url.py

    path('checkemail/',Emailser.as_view()),

views.py

class Emailser(View):
    def post(self, request):
        em = request.POST['email']
        print(em)
        try:
            user = User.objects.get(email=em)
            return HttpResponse('true')
        except:
            return HttpResponse('false')

在views.py 中print(em) 也在打印输入字段但不知道为什么不起作用的邮件。 模板

{% extends 'base.html' %}
{% block content %}
{% load static %}
<div>
  <h2>Sign Up</h2>
  {% if error %}
{{error}}
<br/>
{% endif %}
  <form method="post" id="signup" >
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="btn btn-primary" >Signup</button>
  </form>
</div>
     <script src="{% static 'assets/signup.js' %}" ></script>
{% endblock %}

【问题讨论】:

  • 那么你遇到了什么错误?你能提供更多细节吗?
  • @FurkanÖyken 控制台和服务器上没有错误。但我的功能不起作用。当我在数据库中已存在的电子邮件字段中键入邮件地址时,移至下一个密码字段时,它需要向我显示错误“电子邮件已存在”并禁用提交按钮,但它没有做这项工作。

标签: javascript python django ajax function


【解决方案1】:

在成功函数里面试试这个

$('input[type="submit"]').disabled = true;

【讨论】:

    【解决方案2】:
    $(document).on('blur', 'input[name="email"]', function(){
       $.ajax({
        type:'POST',
        url:'/stock/checkemail/',
        data:{
            email:$("#email").val(),
            csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
        },
        success:function(response){
            response ? $('input[type="submit"]').attr('disabled', 'true') :  $('input[type="submit"]').removeAttr('disabled');
    
        },
        failure:function(error){
         console.log(error);
        }
       })
    });
    

    【讨论】:

    • 在这个 ajax 请求被触发后去控制台查看错误。并成功尝试 console.log(response) 以查看可能记录的内容
    • 它给了我true
    • 是的..但这意味着电子邮件存在,它应该禁用该按钮。这不工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多