接口调用方式 -- 原生ajax (获取多个接口地址)

原生ajax

自己封装一个ajax对象。发送异步请求:

ajax.js:

function ajax(json){

    // 传递过来的json对象 如果存在 我们就打印出来
    var json = json || {}
    console.log(json);

    // 如果请求地址是空 程序就不往下执行了
    if(!json.url){
        return false    
    }

    // console.log('小李子是蠢猪');

    // 把数据发送方式转大写
    json.type = (json.type || 'post').toUpperCase()
    // console.log(json.type);

    // 发送ajax请求
    // 1.首先要创建一个Ajax对象
    var xlz = new XMLHttpRequest()

    if(window.XMLHttpRequest){
        xlz = new XMLHttpRequest();
    }else{
        xlz = new ActiveXObject('microsoft.XMLHttp');
    }
    console.log(xlz);

    // 2.发送请求
    if(json.type == 'GET'){
        xlz.open('get', json.url, true)
        xlz.send()
    }else if(json.type == 'POST'){
        xlz.open('post', json.url, true)
        xlz.send()
    }

    // 3.将从服务器上  请求到的数据 显示在 页面上
    xlz.onreadystatechange = function(){
        // console.log(xlz.readyState);
        // console.log(xlz.status);

        // 响应已就绪
        if(xlz.readyState == 4 && xlz.status == 200){
            // console.log(typeof xlz.responseText);
            // console.log(resObj);
            var resObj = JSON.parse(xlz.responseText)
            json.success(resObj)
        }
    }
   

    return json
}

index.html中操作:

<title>原生js 如何封装一个ajax对象 然后用这个ajax对象 发送异步请求</title>
</head>
<body>
    <button id="btn">点击,发送请求</button>

    <ul id="jsonData"></ul>


    <script src="./js/ajax.js"></script>

    <script>
        // 网易云音乐api -- 获取banner轮播图 接口地址
        var apiUrl = `http://localhost:3000/banner`
        // var apiUrl = ``

        // 抓取元素
        var btn = document.querySelector('#btn')
        var ulO = document.querySelector('#jsonData')

        btn.onclick = function(){
            // 调用执行
            ajax({
                // 请求地址
                url: apiUrl,
                // 数据发送方式
                type:'post',
                // 服务器返回的数据类
                dataType:'json',
                // 服务器返回的数据
                success:function(res){
                    // console.log('打印服务器返回给我们的数据');
                    // console.log(res.banners);

                    var strHTML = ``
                    // 遍历数组
                    res.banners.forEach((item)=>{
                        // console.log(item.imageUrl);
                        strHTML += `<li><img src="${item.imageUrl}" alt=""></li>`
                    })
                    // console.log(strHTML);
                    // 向ul里放置内容
                    ulO.innerHTML = strHTML

                }
            })
        }

    </script>

预览效果:

预览效果:

获取多个接口地址的写法(获取热门歌手、电台主播新人榜):

HTML代码:

<title>原生js 如何封装一个ajax对象 然后用这个ajax对象 发送异步请求</title>
</head>
<body>
    <button id="btn">点击,发送请求</button>
    <ul id="jsonData"></ul>


    <script src="./js/ajax.js"></script>

    <script>
        // 网易云音乐api -- 获取banner轮播图 接口地址
        var apiUrl = `http://localhost:3000/banner`
        // var apiUrl = ``

        // 网易云音乐api--- 获取热门歌手 接口地址
        // var apiUrl = `http://localhost:3000/top/artists`

        // 网易云音乐api--- 获取电台主播新人榜 接口地址
        // var apiUrl = `http://localhost:3000/dj/toplist/newcomer`

        // 抓取元素
        var btn = document.querySelector('#btn')
        var ulO = document.querySelector('#jsonData')

        btn.onclick = function(){
            // 调用执行
            ajax({
                // 请求地址
                url: apiUrl,
                // 数据发送方式
                type:'post',
                // 服务器返回的数据类
                dataType:'json',
                // 服务器返回的数据
                success:function(res){
                    console.log('打印服务器返回给我们的数据');
                    // console.log(res.newcomer);
                    // console.log(res.artists);
                    console.log(res.banners);

                   
                }
            })
        }

    </script>

获取热门歌手预览效果:

获取电台主播新人榜预览效果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值