Ajax请求、json、以及原生方法操作接口

1.Ajax请求:

<button onclick="ajaxFn()">ajax获取数据</button>

    <script>

        function ajaxFn (){

        let xhr = new XMLHttpRequest();

        /* 0:请求未初始化(还没有调用到open方法) */

        console.log('请求未初始化',xhr.readyState);

        xhr.open('get','abc.txt',true)

        xhr.send();

        /* 1:服务器连接已建立(已调用send方法,正在发生请求) */

        console.log('服务器连接已经建立',xhr.readyState);

        /* onreadystatechange就是用来监听readyState值的变化的 */

        xhr.onreadystatechange = function(){

            /* 2:请求已接受(send方法完成.已接收到全部响应内容) */

            if(xhr.readyState==2){

                console.log('请求已接收',xhr.readyState);

            }

            /* 3.请求处理中(解析响应内容) */

            if(xhr.readyState==3){

                console.log('请求处理中',xhr.readyState);

            }

            /* 4.请求已完成,且响应已就绪 */

            if(xhr.readyState==4){

                console.log('请求已完成',xhr.readyState);

            }

            /* xhr.responseText通过Ajax请求获得数据 */

            /* console.log(xhr.responseText) */

        }

    }

        /* 响应状态码 */

        /* status为200,201(从缓存读取) 表示请求成功 */

        /* status为304,表示从http请求中的缓存拿来的数据 */

        /* status为404 not found 表示找不到页面 多数前端问题*/

        /* status为403 表示没有权限,禁止访问 */

        /* status为500 表示服务端代码错误 */

    </script>

2.JSON:

JSON写法模板:

{

    "name":"zhangsan",

    "age":30,

    "flag":true,

    "city":null,

    "arrList":[{

        "car":"ct5"

    },{

        "car":"ct7"

    },{

        "car":"ct6"

    }]

}

JSON基础概念:

<!--

         JSON是一种轻量级的数据交换格式,它基于 ECMAScript 的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据

     -->

     <!--

        JSON里面可以写[] 也可以{}

        但是必须使用双引号

        数据在名称/值对中

        数据由逗号分隔

        大括号保存对象

        中括号保存数组

        可以是数字、字符串、逻辑值、数组、对象、null

      -->

    <button onclick="getData()">获取用户信息</button>

    <div id="userInfo"></div>

    <script>

        /* JSON是一种轻量级的数据交换格式 */

        function getData() {

            let userInfo = document.getElementById('userInfo');

            let xhr = new XMLHttpRequest();

            xhr.open('get', '6.date.json', true);

            xhr.send();

            xhr.onreadystatechange = function () {

                if (xhr.readyState == 4) {

                    /* document.write(JSON.parse(xhr.responseText)) */

                    let obj = JSON.parse(xhr.responseText)

                    let str =

                        '<h1>姓名:' + obj.name + '</h1>' +

                        '<h1>年纪:' + obj.age + '</h1>' +

                        '<h1>城市:' + obj.city + '</h1>' +

                        '<h1>汽车:</h1>';

                    if (obj.arrList.flag) {

                        for (var i = 0; i < obj.arrList.length; i++) {

                            str += '<h1>' + obj.arrList[i].car + '</h1>';

                        }

                    }

                    userInfo.innerHTML = str

                }

            }

        }

    </script>

JSON练习:

<style>

        * {

            margin: 0;

            padding: 0;

        }

        .box {

            width: 100%;

            height: 1.5rem;

            border-bottom: 1px solid #ccc;

        }

        .t {

            font-size: 16px;

            margin: .05rem;

        }

        .imgs {

            width: 100%;

            display: flex;

        }

        .imgs img {

            width: 33%;

            height: 1rem;

            margin: .05rem;

            display: block;

        }

    </style>

</head>

<body>

    <!-- <div class="box">

        <p class="t">看到她这张脸,我就知道未来的“偶像剧”有希望了</p>

        <div class="imgs">

            <img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1490879384,162462824&fm=30&app=106&f=JPEG?w=312&h=208&s=3282DD4FCCDA45DEF0057CBA03006011" alt="">

            <img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1490879384,162462824&fm=30&app=106&f=JPEG?w=312&h=208&s=3282DD4FCCDA45DEF0057CBA03006011" alt="">

            <img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1490879384,162462824&fm=30&app=106&f=JPEG?w=312&h=208&s=3282DD4FCCDA45DEF0057CBA03006011" alt="">

        </div>

    </div> -->

    <script>

        let body = document.querySelector('body');

        let xhr = new XMLHttpRequest();

        xhr.open('get', 'newsData.json', true);

        xhr.send();

        xhr.onreadystatechange = function () {

            if (xhr.readyState == 4) {

                let obj = JSON.parse(xhr.responseText);

                let str = ''

                for (var i = 0; i < obj.length; i++) {

                    str +=

                        '<div class="box">' +

                            '<p class="t">' + obj[i].title + '</p>' +

                            '<div class="imgs">' +

                                '<img src="' + obj[i].img1 + '" alt="">' +

                                '<img src="' + obj[i].img2 + '" alt="">' +

                                '<img src="' + obj[i].img3 + '" alt="">' +

                            '</div>' +

                        '</div>';

                }

                body.innerHTML = str;

            }

        }

    </script>

3.原生方法操作接口:

<body>

    <button onclick="login()">请先登录</button>

    <p>

        <button onclick="getUserInfo()">获取用户数据</button>

    </p>

    <!-- 真实接口 用来登录的

          使用post方式登录 -->

    <script>

        function getUserInfo(){

            /* pagenum=1 表示获取第一页的数据 */

            /* pagessize=5 表示显示5条数据 */

            if(!localStorage.token){

                 alert('请先登录获取token')

                 return;

            }

            let xhr = new XMLHttpRequest();

            let url = 'http://timemeetyou.com:8889/api/private/v1/users?pagenum=1&pagesize=6';

            xhr.open('get',url,true);

            xhr.setRequestHeader('Authorization',localStorage.token)

            xhr.send();

            xhr.onreadystatechange = function(){

                if(xhr.readyState == 4){

               let res = JSON.parse(xhr.responseText);

               console.log(res);

            }



        }

    }

       function login(){

       let xhr = new XMLHttpRequest();

       let url = 'http://timemeetyou.com:8889/api/private/v1/login';

       xhr.open('post',url,true);

       let params = {username:"admin",

           password:"123456"};

           /* post需要添加请求头 */

           /* 请求回来的内容是json格式 */

           /*  Content-type 表示请求内容的类型*/

           /* application/json 表示请求内容类型的具体的值 */

           xhr.setRequestHeader("Content-type","application/json")

       xhr.send(JSON.stringify(params));

       xhr.onreadystatechange = function(){

           if(xhr.readyState == 4){

               let res = JSON.parse(xhr.responseText);

               console.log(res);

               localStorage.token = res.data.token;

               // location.href="shop.html"

           }

       }

    }

    </script>



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

推荐阅读更多精彩内容