博主信息
博文 18
粉丝 0
评论 0
访问量 15571
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
表单事件与Ajax 表单验证-0716
XXXX.的博客
原创
708人浏览过
  1. 动态获取用户信息:

    基本步骤:1.创建: 请求对象  2.监听: 成功回调   3.设置: 请求参数   4.发送: 异步请求

    innerHTML支持HTML标签      isNaN判断是否为数值   readystatechange   successCallback 成功回调

    encodeURIComponent():对值中的非法字符进行编码,如空格等,解码:decodeURIComponent()

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax-GET</title>
</head>
<body>
<label for="user_id">用户ID:</label>
<input type="text" id="user_id" name="user_id" autofocus>
<p id="tips"></p>
<script>
    var input = document.getElementById("user_id");
    var tips = document.getElementById('tips');
    // 1. 创建: 请求对象
     var request = new XMLHttpRequest();
     input.addEventListener('keyPress',getUserInfo,false);
     function getUserInfo(ev) {
         if (ev.key === 'Enter'){
             switch (true) {
                 case input.value.length === 0:
                     tips.innerHTML ='<span style="color: red">ID不能为空</span>';
                     return false;

                 case isNaN(input.value):
                     tips.innerHTML = "<span style='color: red'>ID必须为整数</span>"
                     return false;


                 default:
                     request.addEventListener('readystatechange',successCallback,false);
                     var data = encodeURIComponent(input.value);
                     request.open('GET','php/user_info.php?user_id='+data,true);
                     request.send(null);


             }
         }
     }

     function successCallback() {
         if (request.readyState === 4){
             tips.innerHTML = request.responseText;
         }
     }

     input.addEventListener('input',function () {
         tips.innerHTML = null;
     },false);
</script>
</body>
</html>

运行实例 »

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

2.post方式表单验证:

    基本步骤:1.创建: 请求对象  2.监听: 成功回调   3.设置: 请求参数   4.发送: 异步请求   5.设置请求头类型

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>post</title>
</head>
<body>
<h2>用户登录</h2>
<form action="" name="login">
    <p>
        <label for="username">用户:</label>
        <input type="text" name="username" id="username" placeholder="UserName">
    </p>
    <p>
        <label for="email">邮箱:</label>
        <input type="text" name="email" id="email" placeholder="example@email.com">
    </p>
    <p>
        <label for="password">密码:</label>
        <input type="password" name="password" id="password" placeholder="******" >
    </p>
    <p>
        <label for="remember">记住我:</label>
        <select name="remember" id="remember">
            <option value="1" selected>一天</option>
            <option value="7">一星期</option>
            <option value="30">一个月</option>
        </select>
    </p>
    <p>
        <button type="button" name="submit">提交</button>
    </p>
</form>

<script>
    var login = document.forms.namedItem('login');
    var btn = login.submit;
    var request = new XMLHttpRequest();
    login.username.addEventListener('blur', isEmpty, false);
    login.email.addEventListener('blur', isEmpty, false);
    login.password.addEventListener('blur', isEmpty, false);
    function isEmpty(ev) {
        if (ev.target.value.length === 0) {
            if (ev.target.nextElementSibling === null) {
                var tips = document.createElement('span');
                tips.style.color = 'red';
                switch (ev.target.name) {
                    case 'username':
                        tips.innerText = '用户名不能为空';
                        break;
                    case 'email':
                        tips.innerText = '邮箱不能为空';
                        break;
                    case 'password':
                        tips.innerText = '密码不能为空';
                        break;
                    default:
                        tips.innerText = '未定义错误';
                }
                ev.target.parentNode.appendChild(tips);

            }
            ev.target.focus();
        }
    }
    login.username.addEventListener('input', clearTips, false);
    login.email.addEventListener('input', clearTips, false);
    login.password.addEventListener('input', clearTips, false);

    function clearTips(ev) {
        var tips =  ev.target.nextElementSibling;
        if (tips !==null){
           tips.parentNode.removeChild(tips);
        }
    }
    btn.addEventListener('click',check,false);
    function check(ev) {
        var username = login.username.value;
        var email = login.email.value;
        var password = login.password.value;
        var remember = login.remember.value;
        if (username.length === 0 || email.length === 0 || password.length === 0){
            ev.target.removeEventListener('click',check,false);
            var blurEvent = new Event('BLUR');
            login.username.dispatchEvent(blurEvent);
            return false;
        }
        var data = 'username='+username+'&email='+email+'&password='+password+'&remember='+remember;
        request.addEventListener('readystatechange', successCallback, false);
        request.open('POST', 'php/check.php', true);
        request.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=utf-8');
        request.send(data);
            }
    function successCallback(ev) {
        if (request.readyState === 4) {
            console.log(request.responseText);
        }
    }
</script>
</body>
</html>

运行实例 »

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


批改状态:合格

老师批语:对于Ajax,重点掌握它的步骤, 还是常用的几个属性和方法, 必须背下来
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学