博客列表 >JS之AJAX实现登录跳转_2018-09-13

JS之AJAX实现登录跳转_2018-09-13

theYon的博客
theYon的博客原创
2018年09月14日 22:52:09598浏览

JS之AJAX实现登录跳转

主要知识点

1)Ajax的工作原理分析

* 异步为例

* a.浏览器让XMLHttpRequest去向服务器发去请求

* b.浏览器接着干别的事

* c.XMLHttpRequest去向服务器发去请求数据

* d.服务器返回数据

* c.XMLHttpRequest通知浏览器数据返回了

* d.浏览器收到XMLHttpRequest返回的数据渲染到页面

微信图片_20180914224759_看图王.jpg

代码

login.html

<!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>登陆</title>
</head>
<body>
    <h2>用户登录</h2>
    <form>
        <div>用户名:<input type="text" name="name"></div>
        <div>密码:<input type="password" name="pwd"></div>
        <div><button type="button" id="btn">提交</button></div>
    </form>
</body>
    <script>
        var btn = document.getElementById('btn');
        btn.onclick = function(){
            var name = document.getElementsByName('name')[0].value;
            var pwd = document.getElementsByName('pwd')[0].value;
            
            // 创建XMLHttpRequest对象
            var xhr = new XMLHttpRequest();
            // 监听响应状态
            xhr.onreadystatechange = function(){
                // 就绪
                if(xhr.readyState === 4) {
                    // 判断响应结果
                    if(xhr.status === 200) {
                        // 响应成功
                        var p = document.createElement('P');
                        p.style.color = 'red';

                        // 响应结果
                        var data = JSON.parse(xhr.responseText);
                        if(data.status === 1){
                            p.innerHTML = data.msg;
                        } else {
                            p.innerHTML = data.msg;
                        }
                        document.forms[0].appendChild(p);
                        btn.disabled = true;

                        // 2s跳转
                        setTimeout(function(){
                            btn.disabled = false;
                            if(data.status === 1){
                                location.href = 'index.php?username=theYon';
                            }
                        },2000);
                    } else {
                        alert('error: '+xhr.status);
                    }
                } else {
                    console.log('error');
                }
            }
            // 设置请求参数
            xhr.open('post','demo1.php',true);
            // 设置请求头
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            // 发送请求
            var data = {
                name:name,
                pwd:pwd
            }
            var data_json = JSON.stringify(data);
            xhr.send('data='+data_json);
        }
    </script>
</html>

demo1.php

<?php

// 获取请求数据
$user = json_decode($_POST['data']);
$name = $user->name;
$pwd = sha1($user->pwd);

// 链接数据库
try{
    $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
} catch(PDOException $e) {
    die($e->getMessage());
}

$sql = "SELECT COUNT(*) FROM `user` WHERE `user_name`= '{$name}' AND `password`= '{$pwd}' ";
$stmt = $pdo->prepare($sql);
$stmt->execute();
if($stmt->fetchColumn(0) == 1){
    echo json_encode(['status'=>1,'msg'=>'登陆成功...']);
    exit;
} else{
    echo json_encode(['status'=>0,'msg'=>'账号或密码错误,登录失败!']);
    exit;
}

index.php

<?php

if(isset($_GET['username'])){
    $username = $_GET['username'];
    echo "<h1>{$username},欢迎您使用<h1>";
} else {
    echo '<a href="login.html">请登陆</a>';
}

运行结果

微信截图_20180914225121.png

微信截图_20180914225144.png

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