jQuery 验证远程选项 Flask

Posted

技术标签:

【中文标题】jQuery 验证远程选项 Flask【英文标题】:jQuery Validation Remote option Flask 【发布时间】:2013-03-14 20:18:09 【问题描述】:

我正在尝试检查新用户输入的电子邮件地址是否已存在。

这是我的 html

$("#createform").validate(
            errorClass: "errormessage",
            validClass: "success",

        rules: 
            fname: 
                required: true,
                minlength: 2,
                string: true,
            ,

            lname: 
                required: true,
                minlength: 2,
                string: true,
            ,

            email: 
                required: true,
                email: true,
                remote: $.getJSON($SCRIPT_ROOT + "/_check_mail")
            ,

            password: 
                required: true,
                minlength: 5,
            ,

            confirmpassword: 
                equalTo: "#password"
            
        

这是我的 Flask 方法:

@app.route('/_check_mail')
def check_mail():
    mail = request.args.get('email')
    check = database.check_mail(mail)
    return check

database.check_mail(mail) 检查电子邮件是否已经在数据库中并返回 True 或 False(在 JSON 中)。

当我第一次加载页面并且客户端尝试访问烧瓶 URL (/_check_mail) 时,它可以工作:

请求网址:http://0.0.0.0:5000/_check_mail 请求方法:获取状态 代码:200 OK

但是当我输入电子邮件时,我会将此请求发送到获得 404 响应的服务器:

请求网址:http://0.0.0.0:5000/[object%20Object]?email=arnoutaertgeerts%40gmail.com 请求方法:GET 状态代码:404 未找到

所以我认为发送电子邮件有问题?有什么想法吗?

【问题讨论】:

【参考方案1】:

问题解决了!我将其用于我的请求:

email: 
    required: true,
    email: true,
    remote: function( request, response ) 
        $.getJSON($SCRIPT_ROOT + "/_check_mail", 
        email: $('#email').val()
        , response);

现在一切正常,除了显示错误消息。当电子邮件已经存在时,我会返回带有错误消息的字符串(如文档中所述),但不会显示消息。但是在查看收到的回复时,我清楚地收到了它!

【讨论】:

答案应该只包含解决方案,后续问题应该修改到您的 OP 中。你指的是什么文档? I only see two examples here, and neither one 和你的做法完全一样。 这就是我所指的文档,我按照他们使用 php 的方式进行了尝试,但没有成功。使用远程规则,您应该在响应中返回错误文本:) 为什么不在remote 规则上使用标准的通用错误消息?它必须来自您的远程脚本吗?

以上是关于jQuery 验证远程选项 Flask的主要内容,如果未能解决你的问题,请参考以下文章

jQuery远程验证竞争条件

jquery 远程验证 - 验证字段中的数据是不是

jQuery远程验证电子邮件验证服务

jQuery 验证插件的问题(远程验证)

远程时jQuery验证插件停止

jQuery验证远程方法使用以检查用户名是不是已经存在