Flask项目中ajax前端用户名校验(get与post方式)

后端的用于校验逻辑是我们经常使用的,但是前端是用户体验最直观的表现方式。要给予用户良好的感受,假如用户名已经在后台注册过了,应该给用户一种提示信息,并且已注册用户的提交按钮也是不能再进行点击的。如果用户名是没有注册的,提示该用户名是可以进行使用的。

这样的前端校验方式使用ajax是最有效、最简单的方式,因为ajax的一个特性就是局部刷新,我们想要的就是只刷新当前的提示信息。

我们就拿注册功能来说,在用户进行注册时,进行ajax用户名的校验,反馈给后端,后端去查询数据库中的数据,来反馈给ajax数据。并渲染到页面展示提示用户。

先导入一个用于返回json数据的模块

from flask import jsonify
ajax_get请求校验方式
<script src="/static/vendor/jquery/jquery.min.js"></script>
<script>
	//使用jQuery,获取用户名输入框信息,触发焦点事件
    $("#username").blur(
        function () {
        	//获取用户名输入框输入的用户名,并将其拼接到url上,用于ajax get请求
            var username = $("#username").val();
            var url = "/userValid/?username="+username;
            $.ajax(
                {
                    url: url,
                    type: "get",
                    data: "",
                    success: function (data) {
                        if (data.code == 400){//400代表用户名已存在,submit失效
                            $("#submit").attr("disabled",true)
                        } else{//否则submit正常
                            $("#submit").attr("disabled",false)
                        }
                        //将后面传递过来的json数据打印到前端,提示用户
                        $("#message").text(data.data)
                    },
                    error: function (error) {
                        console.log(error)
                    }
                }
            )
        }
    )
</script>

定义一个在后端ajax用户校验的视图:

import hashlib
from flask import jsonify
from flask import request
from flask import redirect

from flask import render_template
from FlaskStudent.main import app
from FlaskStudent.models import *
from FlaskStudent.main import csrf
from FlaskStudent.main import session
from FlaskStudent.forms import TeacherForm
# ajax 前端校验
@app.route("/userValid/")
def userValid():
    # 定义json字典数据格式
    result = {
        "code":"",
        "data":""
    }
    # 获取ajax请求中的参数
    username = request.args.get("username")
    if username:
    	# 查询数据库有无这个用户
        user = User.query.filter_by(username=username).first()
        if user:
            result["code"] = 400
            result["data"] = "用户名已存在"
        else:
            result["code"] = 200
            result["data"] = "用户名未被注册,可以使用"
    return jsonify(result)

效果:

在这里插入图片描述
在这里插入图片描述

ajax_post请求校验方式

前端:

在这里插入图片描述

<script src="/static/vendor/jquery/jquery.min.js"></script>
<script>
    $("#username").blur(
        function () {
            var username = $("#username").val();
            var url = "/userValid/";
            var send_data = {
                "username": username,
                "csrf_token": '{{ csrf_token() }}'
            };
            $.ajax(
                {
                    url: url,
                    type: "post",
                    data: send_data,
                    success: function (data) {
                        if (data.code == 400){
                            $("#submit").attr("disabled",true)
                        } else{
                            $("#submit").attr("disabled",false)
                        }
                        $("#message").text(data.data)
                    },
                    error: function (error) {
                        console.log(error)
                    }
                }
            )
        }
    )
</script>

后端视图:

这里需要注意获取ajax数据时,get请求使用的是request.args 方法,而post请求是需要用request.form获取前端数据
在这里插入图片描述

效果还是和ajax_post一样
在这里插入图片描述

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孜孜孜孜不倦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值