2019-08-16 AJAX 入门神码

Ajax 1 - 请求纯文本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax 1 - 请求纯文本</title>
</head>
<body>
    <button id="button">请求纯文本</button>
    <br><br>
    <div id="text"></div>
    <script>
        document.getElementById('button').addEventListener("click",loadText);
        function loadText(){
            // console.log("Hello World!");
            // 创建XMLHttpRequest对象
            var xhr = new XMLHttpRequest();
            // console.log(xhr);
            // open(type,url/file,async)
            xhr.open('GET','sample.txt',true);

            // console.log("READYSTATE: ",xhr.readyState);

            // onprogress
            xhr.onprogress = function(){
                // console.log("测试READYSTATE: ",xhr.readyState);
            }

            // 两种方式请求 onload / onreadystattechange
            // xhr.onload = function(){
            //  // console.log("READYSTATE: ",xhr.readyState);
            //  // console.log(this.responseText);
            //  document.getElementById('text').innerHTML = this.responseText;
            // }

            xhr.onreadystatechange = function(){
                // console.log("READYSTATE: ",xhr.readyState);
                if (this.status == 200 && this.readyState == 4) {
                    // console.log(this.responseText);
                    document.getElementById('text').innerHTML = this.responseText;
                }else if(this.status == 404){
                    // console.log("请求的网页不存在");
                    document.getElementById('text').innerHTML = "NOT Found";
                }
            } 

            // 发送请求
            xhr.send();
        }

        // readyState 状态码
        // 0: 请求未初始化
        // 1: 服务器连接已建立
        // 2: 请求已接收
        // 3: 请求处理中
        // 4: 请求已完成,且响应已就绪

        // HTTP 状态码
        // 200 - 服务器成功返回网页
        // 404 - 请求的网页不存在
        // 503 - 服务器暂时不可用

    </script>
</body>
</html>

Ajax 2 - 请求JSON数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax 2 - 请求JSON数据</title>
</head>
<body>
    <button id="button1">请求单个用户</button>
    <button id="button2">请求所有用户</button>

    <br><br>

    <h1>单个用户</h1>
    <div id="user"></div>

    <h1>所有用户</h1>
    <div id="users"></div>

    <script>
        document.getElementById('button1').addEventListener('click',loadUser);
        document.getElementById('button2').addEventListener('click',loadUsers);

        function loadUser(){
            var xhr = new XMLHttpRequest();
            xhr.open("GET","user.json",true);
            xhr.onload = function(){
                if (this.status == 200) {
                    // console.log(this.responseText);
                    var user = JSON.parse(this.responseText);
                    // console.log(user.name);

                    var output = '';
                    output += 
                        '<ul>'+
                            '<li>'+user.id+'</li>'+
                            '<li>'+user.name+'</li>'+
                            '<li>'+user.email+'</li>'+
                        '</ul>';
                    ;
                    document.getElementById('user').innerHTML = output;
                }
            }

            xhr.send();
        }

        function loadUsers(){
            var xhr = new XMLHttpRequest();
            xhr.open("GET","users.json",true);
            xhr.onload = function(){
                if (this.status == 200) {
                    var users = JSON.parse(this.responseText);
                    var output = '';

                    // 遍历数组
                    for(var i in users){
                        output += 
                            '<ul>'+
                                '<li>'+users[i].id+'</li>'+
                                '<li>'+users[i].name+'</li>'+
                                '<li>'+users[i].email+'</li>'+
                            '</ul>';
                        ;
                    }
                    document.getElementById('users').innerHTML = output;
                }
            }

            xhr.send();
        }

    </script>
</body>
</html>

Ajax 3 - 请求Github接口

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>3.请求Github接口</title>
    <style>
        .user{
            display: flex;
            background: #f4f4f4;
            padding: 10px;
            margin-bottom: 10px;
        }

        .user ul{
            list-style: none;
        }

    </style>
</head>
<body>
    <button id="button">请求Github接口</button>

    <br><br>

    <h1>所有Github的用户信息</h1>

    <div id="users"></div>

    <script>
        document.getElementById('button').addEventListener('click',loadUsers);

        function loadUsers(){
            var xhr = new XMLHttpRequest();
            xhr.open("GET","https://api.github.com/users",true);

            xhr.onload = function(){
                var users = JSON.parse(this.responseText);
                // console.log(users);

                var output = '';

                for(var i in users){
                    output += `
                        <div class="user">
                            <img src="${users[i].avatar_url}" width="70" height="70" />
                            <ul>
                                <li>ID: ${users[i].id}</li>
                                <li>Login: ${users[i].login}</li>
                            </ul>
                        </div>
                    `;
                }
                document.getElementById('users').innerHTML = output;

            }

            xhr.send();
        }

    </script>
</body>
</html>

Ajax 4 - 请求PHP接口

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax 4 - 请求PHP接口</title>
</head>
<body>
    <button id="button">获取PHP数据</button>

    <br><br>

    <h1>正常表单GET提交数据到PHP</h1>
    <form action="process.php" method="GET">
        <input type="text" name="name">
        <input type="submit" value="提交">
    </form>

    <h1>Ajax请求数据GET</h1>
    <form id="getForm">
        <input type="text" name="name" id="name1">
        <input type="submit" value="提交">
    </form>

    <h1>正常表单POST提交数据到PHP</h1>
    <form action="process.php" method="POST">
        <input type="text" name="name">
        <input type="submit" value="提交">
    </form>

    <h1>Ajax请求数据POST</h1>
    <form id="postForm">
        <input type="text" name="name" id="name2">
        <input type="submit" value="提交">
    </form>

    <script>
        document.getElementById('button').addEventListener('click',getData);
        document.getElementById('getForm').addEventListener('submit',getForm);
        document.getElementById('postForm').addEventListener('submit',postForm);

        function getData(){
            var xhr = new XMLHttpRequest();
            xhr.open('GET',"process.php?name=Henry",true);
            xhr.onload = function(){
                console.log(this.responseText);
            }
            xhr.send();
        }   

        function getForm(e){
            e.preventDefault();
            var name = document.getElementById('name1').value;
            var xhr = new XMLHttpRequest();
            xhr.open('GET',"process.php?name="+name,true);
            xhr.onload = function(){
                console.log(this.responseText);
            }
            xhr.send();
        }   

        function postForm(e){
            e.preventDefault();
            var name = document.getElementById('name2').value;
            var params = "name="+name;
            var xhr = new XMLHttpRequest();
            xhr.open('POST',"process.php",true);
            // 设置请求头
            xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
            xhr.onload = function(){
                console.log(this.responseText);
            }
            xhr.send(params);
        }   
    </script>
</body>
</html>

Ajax 5 - 请求PHP数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax 5 - 请求PHP数据</title>
</head>
<body>
    <button id="button2">请求所有用户</button>
    <br><br>
    <h1>所有用户</h1>
    <div id="users"></div>

    <script>
        document.getElementById('button2').addEventListener('click',loadUsers);
        function loadUsers(){
            var xhr = new XMLHttpRequest();
            xhr.open("GET","users.php",true);
            xhr.onload = function(){
                if (this.status == 200) {
                    var users = JSON.parse(this.responseText);
                    var output = '';

                    // 遍历数组
                    for(var i in users){
                        output += 
                            '<ul>'+
                                '<li>'+users[i].id+'</li>'+
                                '<li>'+users[i].name+'</li>'+
                            '</ul>';
                        ;
                    }
                    document.getElementById('users').innerHTML = output;
                }
            }

            xhr.send();
        }

    </script>
</body>
</html>

php文件-user.php

<?php 

    $conn = mysqli_connect("localhost","root","","ajaxtest");

    $query = 'SELECT * FROM users';

    $result = mysqli_query($conn,$query);

    $users = mysqli_fetch_all($result,MYSQLI_ASSOC);

    echo json_encode($users);
 ?>

php文件-process.php

<?php 
    # echo "Hello World!";

    if (isset($_GET['name'])) {
        echo "GET: 你的名字是". $_GET['name'];
    }

    # 连接数据库
    $conn = mysqli_connect("localhost","root",'','ajaxtest');

    if (isset($_POST['name'])) {
        // echo "POST: 你的名字是". $_POST['name'];

        # 将拿到的数据转化一下
        $name = mysqli_real_escape_string($conn,$_POST['name']);

        $query = "INSERT INTO users(name) VALUES('$name')";
        mysqli_query($conn,"set name utf8");
        if(mysqli_query($conn,$query)){
            echo '用户添加成功!';
        }else{
            echo "用户添加失败!".mysqli_error($conn);
        }
    }
?>

json文件-user.json

{
    "id":1,
    "name":"henry",
    "email":"henry@gmail.com"
}

json文件-users.json

[
    {
        "id":1,
        "name":"Henry",
        "email":"henry@gmail.com"
    },
    {
        "id":2,
        "name":"Bucky",
        "email":"bucky@gmail.com"
    },
    {
        "id":3,
        "name":"Hemiah",
        "email":"27732357@qq.com"
    }
]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容