博客列表 >0919作业:jQuery中的Ajax

0919作业:jQuery中的Ajax

Samoye
Samoye原创
2018年10月01日 12:13:33653浏览

作业:编程1: $.post()实现用户注册

代码块实现的功能:对电话号的验证及从server取得数据的处理

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实现用户注册</title>
    <script src="../lib/jquery.js"></script>
</head>
<body>
<h3>用户注册</h3>
<div>
    <label for="username">用户名:</label>
    <input type="text" name="username" value="" id="username" placeholder="请填写手机号码!">
</div>
<div>
    <label for="password">密码:</label>
    <input type="password" name="password" value="" id="password" placeholder="不少于6位">
</div>
<div>
    <button value="注册">注册</button>
  <!--  <button value="重置">重置</button>-->
</div>
<script>
    $('button').click(function () { //不太会写,先提供一个思路:拿到文本框的值,先判断是字符串还是数字,然后字符串进行邮箱验证,数字进行手机验证:tostring.call();
        //手机号码验证 (仅一种验证)写成一个函数更好
       /* let phoneReg = /^(((13[0-9]{1})|(14[0-9]{1})|(17[0]{1})|(15[0-3]{1})|(15[5-9]{1})|(18[0-9]{1}))+\d{8})$/; 手机号码正则 */
        /* let emailReg = /\w+[@]{1}\w+[.]\w+/;  邮箱正则 */
        let phone = $("#username").val();
        let phoneReg = /^(((13[0-9]{1})|(14[0-9]{1})|(17[0]{1})|(15[0-3]{1})|(15[5-9]{1})|(18[0-9]{1}))+\d{8})$/;
        if(phone ==''){
           $('#username').after('<span style="color: red;" >请填写手机号码!</span>').next().fadeOut(3000);
           $('#username').focus();
           return false;
        }else if (phone.length != 11){
            $('#username').after('<span style="color: red;" >手机号码位数不正确!</span>').next().fadeOut(3000);
            $('#username').focus();
            return false;
        }else if (!phoneReg.test(phone)){
            $('#username').after('<span style="color: red;" >请填写正确的手机号码!</span>').next().fadeOut(3000);
            $('#username').focus();
            return false;
        }/*else if (checkPhoneIsExist()){ 想对号码是否已被使用验证,但是考虑到密码的验证,就一起发动到PHP,让PHP处理把

        }*/
        //密码非空验证
        if($('#password').val() ==''){
            $('#password').after('<span style="color: red;" >请填写密码!</span>').next().fadeOut(3000);
            $('#password').focus();
            return false;
        } else if ($('#password').val().length < 6) {
            $('#password').after('<span style="color: red;" >密码长度不够!</span>').next().fadeOut(3000);
            $('#password').focus();
            return false;
        }

        //将文本框获得用户信息,返回到服务器进行验证
        //$.post(url[,data][,callback][,dataType])
        $.post(
            'check.php',
            {
                username: $('#username').val(),
                password: $('#password').val()
            },
            function (data) {
                if (data.status == 0){
                   $('button').after('<span style="color:red;"></span>').next().html(data.message).fadeOut(3000);
                }else if (data.status == 1){
                    $('button').after('<span style="color:green;"></span>').next().html(data.message).fadeOut(3000);
                }else if (data.status == 2){
                    $('button').after('<span style="color:yellow;"></span>').next().html(data.message).fadeOut(3000);
                }
            },
            'json'
        );

    });

</script>

</body>
</html>

运行实例 »

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

代码2:check.php

对页面获得数据进行验证,并执行,返回执行结果

<?php
/**
* 接收传来的电话号码 密码,和数据表中验证,返回一个状态字
*/

//接受数据
$username = $_POST['username'];
$password = $_POST['password'];


//建立数据库的连接
   $pdo = new PDO ('mysql:host=localhost;dbname=stu','root','root');
   $sql = "SELECT COUNT(*) FROM `user` WHERE `email=:username`";
   $stmt = $pdo->prepare($sql);
   $stmt->execute(['username'=>$username]);
   if ($stmt->fetchColumn(0) == 1){
       $status = 0;
       $message = '手机已存在,请登录!';
   }else {
       $insert = "INSERT INTO `user` (`email`,`password`) VALUE (:username,:password)";
       $stmt1 = $pdo->prepare($insert);
       $flag = $stmt1->execute(['username'=>$username,'password'=>$password]); //有可能会插入失败,所有要捕获错误
       if ($flag){
           $status = 1;
           $message ="注册成功,跳转中……";
       }else{
           $status = 2;
           $message ="errors,请稍后再试!";
       }
   }

   echo json_encode(['status'=>$status,'message'=>$message]);


作业2,实现省市区的三级菜单联动

实例

<!doctype html>
<html lang="zh_cn">
<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>菜单联动的实现</title>
    <script src="../lib/jquery.js"></script>
</head>
<body>
省:<select name="" id="pro"></select>
市:<select name="" id="city"></select>
区县:<select name="" id="area"></select>

<script>
    $(function () {
        $.getJSON('1.json',function (data) {
            let option = '<option value="">选择(省)</option>';
            $.each(data, function (i) {
                option += '<option value="'+data[i].proId+'">'+data[i].proName+'</option>';
            });
            $('#pro').html(option);
        });

        $('#pro').change(function () {
            $.getJSON('2.json',function (data) {
                let option ='<option value="">选择市区</option>';
                $.each(data,function (i) {
                    if(data[i].proId == $('#pro').val()){  //实现省和市的挂钩
                        option += '<option value="'+data[i].cityId+'">'+data[i].cityName+'</option>';
                    }
                })
                $('#city').html(option);
            })
        })
        $('#city').change(function () {
            $.getJSON('3.json',function (data) {
                let option ='<option value="">选择县区</option>';
                $.each(data,function (i) {
                    if(data[i].cityId== $('#city').val()){
                        option += '<option value="'+data[i].areaId+'">'+data[i].areaName+'</option>'
                    }
                });
                $('#area').html(option);
            });

        })
    })
</script>
</body>
</html>

运行实例 »

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


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