博客列表 >Ajax表单验证实例

Ajax表单验证实例

源逸
源逸原创
2019年06月02日 16:08:231467浏览
  1. 假设当前自己是用户来注册表单或登录,如果你填写完信息后页面发生跳转,给用户一种感觉是离开来页面。所以采取页面不跳转的方式,给用户的感官上页面是没有发生跳转的;

    1.1).给form添加onsubmit="return false;"禁用表单发生跳转,

  1. 2).如果按钮没有添加type属性的话,默认buttontypesubmit,应当手动修改typebutton,当作普通按钮来使用

    2.因表单以post方式来提交,所以Ajax需要以表单方式来提交,欺骗服务器误以为是表单

    request.setRequestHeader('Content-Type','application/x-www-form-urlencoded')


    3.把验证数据和Ajax异步请求分离出来,方便后续出了问题好查找问题,提高代码的可有性

QQ图片20190602160641.png


实例

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Ajax验证</title>
</head>
<body>
<h3>用户登录</h3>
<form method="post" name="login">
    <p>
        <label for="email">请输入邮箱:</label>
        <input type="email" id="email" name="email" placeholder="请输入邮箱" autofocus>
        <span style="color:red;" id="email-tips">*</span>
    </p>
    <p>
        <label for="password">请输入密码:</label>
        <input type="password" id="password" name="password" placeholder="请输入密码">
        <span id="pwd-tips" style="color:red;">*</span>
    </p>
    <p>
        <button id="submit" type="button">提交</button>
        <span id="result"></span>
    </p>
</form>
<script>
    //获取基本信息
    var login = document.forms.namedItem('login');
    var submit = document.getElementById('submit');
    var result = document.getElementById('result');
    var error_email = document.getElementById('email-tips');
    var error_pwd = document.getElementById('pwd-tips');

    //按钮作为主函数,设置单击监听事件
    submit.addEventListener('click',checkUser,false);

    //主函数
    function checkUser(){
        //1.非空验证
        var user = isEmpty(login,error_email,error_pwd);

        //2.Ajax验证
        return user ? verfiy(user,result) : false;
    }


    //非空验证
    function isEmpty(form,error1,error2) {
        //清空字符串左右空格
        var email = form.email.value.trim();
        var password = form.password.value.trim();

        if(email.length === 0){

            error1.innerHTML = '邮箱不能为空';
            login.email.focus();
            return false;

        } else if(password.length === 0){

            error2.innerHTML = '密码不能为空';
            login.password.focus();
            return false;

        }

        //以对象字面量方式返回
        return {
            email:email,
            password:password
        };
    }

    //Ajax验证
    function verfiy(user,result) {
        //1.创建对象
        var request = new XMLHttpRequest();

        //2.异步事件函数
        request.onreadystatechange = function () {

            //判断是否准备就绪
            if(request.readyState === 4){
                console.log(request.responseText);
                result.innerHTML = request.responseText;

            }

            return false;
        };

        //3.请求设置
        request.open('post','admin/check.php',true);

        //4.post:需要设置请求头信息,以表单方式发送
        request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

        //5.发送请求数据
        var data = 'email=' + user.email + '&password=' + user.password;
        request.send(data);
    }

    //清空输入的占位符信息
    login.email.addEventListener('input',function () {
        result.innerHTML = '';
        error_email.innerHTML = '';
    },false);

    login.password.addEventListener('input',function () {
        result.innerHTML = '';
        error_pwd.innerHTML = '';
    },false);
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


php源码

实例

<?php
header("Content-Type:text/html;charset=utf-8");
print_r($_POST);

$email = $_POST['email'];
$password = $_POST['password'];

$emailList = ['admin@php.cn', 'admin@html.cn', 'admin@py.cn'];
$pwd = md5('123456');

if (!in_array($email, $emailList)) {
    echo '<span style="color: red">邮箱不正确</span>';
} else if (md5($password) !== $pwd) {
    echo '<span style="color: red">密码不正确</span>';
} else {
    echo '<span style="color: green">验证通过,正在跳转...</span>';

}

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议