博客列表 >get post初步了解(表单的传统提交方式和ajax异步提交方式)2019年1月18日22时40分

get post初步了解(表单的传统提交方式和ajax异步提交方式)2019年1月18日22时40分

小明的博客
小明的博客原创
2019年01月21日 15:31:38784浏览

get post是两种数据的提交方式,get主要是向服务器请求数据,是读操作,参数在url上传递,不影响服务器的数据;post是向服务器提交需验证的数据,是写操作,参数只能在请求头上看到,对服务器会产生影响。ajax是用户到服务器的异步交互数据,区别于同步,无需等待,不会阻塞。异步操作时基于事件,所有操作都放在队列里,前面操作不必有结果就可以开始后面的,而前面的在完成后通过事件回调通知操作者。

一,同步提交操作

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单验证传统方式</title>
</head>
<body>
    <form action="admin/check.php" method="POST">
        <p>
            <label for="email">邮箱:</label>
            <input type="email" name="email" id="email">
        </p>
        <p>
            <label for="password">密码:</label>
            <input type="password" name="password" id="password">
        </p>
        <p>
            <button>登录</button>
        </p>         
    </form>    
</body>
</html>

运行实例 »

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

实例

<?php
    // GET
    if ($_SERVER['REQUEST_METHOD'] == 'GET') {
        echo 'GET请求: <br>';
        print_r($_GET);
    }

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        echo 'POST请求: <br>';
        print_r($_POST);



        // 因为有密码,这里默认为POST请求

        // 已注册过的用户邮箱
        $emailList = ['admin@php.cn', 'peter@php.cn'];
        $info = '';

        if (empty($_POST['email'])) {
            exit('<script>alert("邮箱不能为空");history.back();</script>');
        } elseif (!in_array($_POST['email'], $emailList)) {
            exit('<script>alert("新用户,请先注册");location.href="register.php";</script>');
        }
        

        if (empty($_POST['password'])) {
            exit('<script>alert("密码不能为空");history.back();</script>');
        } 

        if ($_POST['email'] && $_POST['password']) {
            echo '<script>alert("验证通过,登录成功");location.href="index.php";</script>';
        }
        
    }

运行实例 »

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

二、ajax异步操作

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单验证 ajax方式</title>
</head>
<body>
    <form action="admin/check1.php" method="POST">
        <p>
            <label for="email">邮箱:</label>
            <input type="email" name="email" id="email">
        </p>
        <p>
            <label for="password">密码:</label>
            <input type="password" name="password" id="password">
        </p>
        <p>
            <button>登录</button>
            <!-- 占位符 显示提示信息 -->
            <span id="tips" style="color:red;"></span>
        </p>         
    </form>
    <script>
        // 找到email节点
        var email = document.getElementById('email');
        var password =document.getElementById('password');
        //找到错误提示的tips
        var tips = document.getElementById('tips');
        // 找到按钮button
        var btn = document.getElementsByTagName('button')[0];
        // email ajax 方式
        function check(obj) {
            obj.onblur = function () {
                // 创建ajax请求对象
                var request = new XMLHttpRequest();
                // 请求成功的回调处理
                request.onreadystatechange = function () {
                    // 请求状态完成(4)并且返回状态200
                    if (this.readyState === 4 && this.status === 200) {
                        tips.innerHTML = this.responseText;
                    }
                }
                // 设置请求参数
                request.open('POST', 'admin/check1.php', true);
                // post要设置请求头信息
                request.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
                // 发送请求
                request.send('email=' + email.value + '&password=' + password.value);
            }
             // 用户修改信息是 清除错误信息提醒
            obj.oninput = function () {
                tips.innerHTML = '';
            }
        }
        check(email);
        check(password);
          
        btn.onclick = function () {
                if (email.value.length > 0 && password.value.length > 0) {
                    tips.innerHTML = '登录成功,正在跳转...';
                    
                    setTimeout(function (){
                        location.href = 'admin/index.php';
                    }, 2000);
                } else {
                    tips.innerHTML = '邮箱和密码不能为空';
                }
    
            
            
            return false;
         }
       
    </script>
</body>
</html>

运行实例 »

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

实例

<?php


$email = empty($_POST['email']) ? '' : $_POST['email'];

$password = empty($_POST['password']) ? '' : $_POST['password'];

$emailList = ['admin@php.cn', 'peter@php.cn'];

if (empty($email)) {
    echo '邮箱不能为空';
} elseif (!in_array($email, $emailList)) {
    echo '新用户,请先注册 <a href="admin/register.php">注册</a>';
} elseif (empty($password)){
    echo '密码不能为空';
}

运行实例 »

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

以上内容总结:

1、get方式主要用于分页 读取用户资料这些操作,post主要用于登录 注册这些需要将数据提交给服务器进行交互读写;

2、同步与异步的区别就是看需不需要等待,在上面的例子中ajax就是将用户输入的数据在不需要等待提交表单操作知乎在做,无需等待,用户体验好 服务器负担小。

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