Blogger Information
Blog 39
fans 0
comment 0
visits 30850
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JavaScript第三课 : Json & Ajax的工作原理,语法特征,以及工作步骤 2018年9月13日 22:38
南通税企通马主任的博客
Original
699 people have browsed it

1、手写: Ajax的完整运行流程(以get为例),共四步。

手写9-13.jpg

2、编程: Ajax用户登录验证

实例登陆校验

<?php

$user = json_decode($_POST['data']);

$email = $user ->email;
$password = sha1($user ->password);

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$sql = "SELECT COUNT(*) FROM `user` WHERE `email`='{$email}' AND `password`='{$password}'";

$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;
}


实例欢迎页面

<?php

echo '<h2>欢迎你,终于来了!</h2>';

实例表单主体(Ajax流程\Json字符串验证)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax之表单验证</title>
</head>
<body>
<h3>用户登录</h3>
<form>
<p>邮箱:<input type="email" name="email" ></p>
<p>密码:<input type="password" name="password"></p>
<p><button type="button">登登登</button></p>
</form>
<script >
    let dl = document.getElementsByTagName('button')[0];
    dl.onclick =function () {
        // 第一步:对象.创建xhr对象(XMLHttpRequest)
        let xhr = new XMLHttpRequest();
        // 第二步:事件.监听响应状态onreadystatechange()
        xhr.onreadystatechange = function () {
            // 属性: readyState 请求状态值,有四个值,我们只对数据就绪状态的值:4感兴趣;
            if (xhr.readyState === 4) {
                // 属性: status 请求状态码, 返回 200 时,表示已从服务器上成功的获取到了返回的文本;
                if (xhr.status === 200) {
                    // 如响应成功:属性: responseText, 从服务器端返回的文本内容;
                    // 首先创建新元素,以便放置返回的内容
                    let p = document.createElement('p');
                    p.style.color = 'red';
                    // 接下来,JSON出场,格式化转化的字符串进行信息验证,先创建一个json对象
                    let json = JSON.parse(xhr.responseText);
                    if (json.status === 1){
                        p.innerHTML = json.msg;
                    }else if (json.status === 0){
                        p.innerHTML = json.msg;
                    }
                    // 做完判断就可以将新元素插入到当前页面中了
                    document.forms[0].appendChild(p);
                    dl.disabled = true;
                    setTimeout(function () {
                        document.forms[0].removeChild(p);
                        dl.disabled = false;
                        if (json.status == 1){
                            location.href = 'welcome.php';
                        }
                    },2000);
                }else {
                    alert('响应失败'+xhr.status);
                }
            }else{
                // 老师说了,HTTP请求这时候还在请进可以插一下转来转去的gif图片~~
            }
        }
        // 第三步:此时监听事件结束,接下来设置请求参数(xhr.open 和xhr.send)
        xhr.open('post','login.php',true);
        // 注意:让我们来设置一下请求头信息,模拟成表格,来欺骗一下服务器,嘿嘿
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        // 骗成功了,可以发送请求了
        let data = {
            email:document.getElementsByName('email')[0].value,
            password:document.getElementsByName('password')[0].value,
        };
        let data_json = JSON.stringify(data);
        xhr.send('data='+data_json);
    }
    
</script>
</body>
</html>

运行实例 »

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


3、Ajax的工作原理分析

终于到了Ajax和Json了 , 讲真 , 感觉比较抽象 ,但是突然间又觉得并不是那么难以理解了;

Ajax是一个欺骗程序 , 它不需要有实际的实例信息 , 只需要Json配合做一些伪造数据的事情 , Ajax就可以

依靠自身的流程来欺骗服务器进行各种的验证 ;

既然连服务器都欺骗了 , 那么除了开发者 , 普通黑客是无法攻破程序自身的防护的 , 

尤其是保障了数据库安全运行...我想这大概就是程序员和模版鼠标操作者的本质区别了吧;

不过既然有流程 , 再抽象也不会说是学不会的 , 只要多研究 , 多实验 ,还是能掌握一些基础的操作编程方法的.

所以如果Ajax的工作原理如果用一句话来概括 : 它更懂得客某端 , 更能适应客某端需求 ,并做出最佳动作反馈!


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments