亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 44
粉絲 0
評(píng)論 0
訪問量 42719
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
表單的Ajax驗(yàn)證-2019年1月18日
的博客
原創(chuàng)
642人瀏覽過

Ajax: 用戶與服務(wù)器之間進(jìn)行異步交互,是基于事件機(jī)制的, 并通過事先設(shè)置的回調(diào)函數(shù)來(lái)處理響應(yīng)數(shù)據(jù), 不會(huì)形成阻塞

所有Ajax操作,都是通過一個(gè): XMLHttpRequest 對(duì)象來(lái)實(shí)現(xiàn)

實(shí)現(xiàn)AJAX異步處理一般分為5個(gè)步驟(POST)

1. 創(chuàng)建ajax請(qǐng)求對(duì)象

var request = new XMLHttpRequest();

2. 請(qǐng)求成功的回調(diào)處理

request.onreadystatechange = function () {

    // 當(dāng)請(qǐng)求完成(4)并成功的獲取到了數(shù)據(jù)(200)    

    if (this.readyState === 4 && this.status === 200) {

        // 更新提示信息              

        tips.innerHTML = this.responseText;

    }

}

3. 設(shè)置請(qǐng)求參數(shù)

request.open('POST', 'admin/check01.php', true);//第三個(gè)參數(shù)true為是否開啟異步,默認(rèn)為true

4. POST請(qǐng)求需要設(shè)置請(qǐng)求頭信息

request.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//為POST異步請(qǐng)求的固定格式

5. 發(fā)送請(qǐng)求

request.send('email=' + email.value + '&password=' + password.value);

Ajax: 執(zhí)行異步操作最有用的工具,可以代理用戶的請(qǐng)求,并對(duì)執(zhí)行結(jié)果進(jìn)行回調(diào)處理,例如局部刷新,非阻塞驗(yàn)證等

實(shí)例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Ajax原理與應(yīng)用</title>
</head>

<body>
    <!-- 
        1. Ajax: 用戶與服務(wù)器之間進(jìn)行異步交互
        2. 同步: 所有操作按事先約定的步驟進(jìn)行,前面工作未完成,后面工作不能開始,遇到執(zhí)行時(shí)間過長(zhǎng)的操作,會(huì)千萬(wàn)阻塞
            例如傳統(tǒng)的表單提交,在等待服務(wù)器處理結(jié)果返回之前,用戶只能等待
        3. 異步: 所有操作放到隊(duì)列中,前一個(gè)操作不必等到執(zhí)行結(jié)果,后一個(gè)操作就可以開始,前一操作執(zhí)行完成后通過事件通知調(diào)用者即可
            所以, 異步是基于事件機(jī)制的, 并通過事先設(shè)置的回調(diào)函數(shù)來(lái)處理響應(yīng)數(shù)據(jù), 不會(huì)形成阻塞
        
        4. 同步與異步的根本區(qū)別在于: 請(qǐng)求發(fā)出后, 是否需要等待結(jié)果, 必須等待結(jié)果就是同步, 不用等待繼續(xù)執(zhí)行就是異步

        5. Ajax: 執(zhí)行異步操作最有用的工具,可以代理用戶的請(qǐng)求,并對(duì)執(zhí)行結(jié)果進(jìn)行回調(diào)處理,例如局部刷新,非阻塞驗(yàn)證等

        6. 所有Ajax操作,都是通過一個(gè): XMLHttpRequest 對(duì)象來(lái)實(shí)現(xiàn)
     -->

    <!-- 下面以異步表單驗(yàn)證為例,學(xué)習(xí)Ajax -->

    <!-- check.php: 傳統(tǒng)的同步方式處理 -->
    <!-- check01.php: Ajax異步處理 -->

    <h2>用戶登錄</h2>
    <form action="admin/check01.php" method="POST">
        <p>
            <label for="email">郵箱:</label>
            <input type="email" name="email">
        </p>
        <p>
            <label for="password">密碼:</label>
            <input type="password" name="password">
        </p>

        <p>
            <button>登錄</button>
            <!-- 占位符:顯示提示信息 -->
            <span id="tips" style="color:red"></span>
        </p>
    </form>

    <!-- 異步Ajax驗(yàn)證 -->
    <script>
        // 獲取表單對(duì)象與控件
        var login = document.forms['login'];
        var email = document.getElementsByName('email')[0];
        var password = document.getElementsByName('password')[0];
        var btn = document.getElementsByTagName('button')[0];
        var tips = document.getElementById('tips');


        // 驗(yàn)證郵箱

        email.onblur = function () {
            //1. 創(chuàng)建ajax請(qǐng)求對(duì)象
            var request = new XMLHttpRequest();

            //2. 請(qǐng)求成功的回調(diào)處理
            request.onreadystatechange = function () {
                // 當(dāng)請(qǐng)求完成(4)并成功的獲取到了數(shù)據(jù)(200)    
                if (this.readyState === 4 && this.status === 200) {
                    // 更新提示信息               
                    tips.innerHTML = this.responseText;
                }
            }

            //3. 設(shè)置請(qǐng)求參數(shù)
            request.open('POST', 'admin/check01.php', true);

            //4. POST請(qǐng)求需要設(shè)置請(qǐng)求頭信息
            request.setRequestHeader('content-type', 'application/x-www-form-urlencoded');

            //5. 發(fā)送請(qǐng)求
            request.send('email=' + email.value + '&password=' + password.value);

        }

        // 用戶修改信息時(shí),清空提示信息
        email.oninput = function () {
            tips.innerHTML = '';
        }


        // 驗(yàn)證密碼
        password.onblur = function () {
            //1. 創(chuàng)建ajax請(qǐng)求對(duì)象
            var request = new XMLHttpRequest();

            //2. 請(qǐng)求成功的回調(diào)處理
            request.onreadystatechange = function () {
                // 當(dāng)請(qǐng)求完成(4)并成功的獲取到了數(shù)據(jù)(200)    
                if (this.readyState === 4 && this.status === 200) {
                    // 更新提示信息               
                    tips.innerHTML = this.responseText;
                }
            }

            //3. 設(shè)置請(qǐng)求參數(shù)
            request.open('POST', 'admin/check01.php', true);

            //4. POST請(qǐng)求需要設(shè)置請(qǐng)求頭信息
            request.setRequestHeader('content-type', 'application/x-www-form-urlencoded');

            //5. 發(fā)送請(qǐng)求
            request.send('email=' + email.value + '&password=' + password.value);

        }

        // 用戶修改信息時(shí),清空提示信息
        password.oninput = function () {
            tips.innerHTML = '';
        }



        // 上面的郵箱和密碼的驗(yàn)證有很多重復(fù)代碼, 可以通過將公共代碼封裝到函數(shù)用,實(shí)現(xiàn)代碼復(fù)用,請(qǐng)自己完成



        btn.onclick = function () {
            if (email.value.length > 0 && password.value.length > 0) {
                tips.innerHTML = '登錄成功,正在跳轉(zhuǎn)...';

                setTimeout(function () {
                    location.href = 'admin/index.php';
                }, 2000);
            } else {
                tips.innerHTML = '郵箱和密碼不能為空';
            }



            return false;
        }
    </script>

</body>

</html>

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例

check01.php

實(shí)例

<?php

// print_r($_POST);

$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 '新用戶,請(qǐng)先注冊(cè) <a href="http://demo.io/admin/register.php">注冊(cè)</a>';
} elseif (empty($password)){
    echo '密碼不能為空';
}

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


批改狀態(tài):合格

老師批語(yǔ):jQuery那幾節(jié)課沒有把狀態(tài)設(shè)置為作業(yè)吧
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)