js实现在线音频播放(apache+ajax)

步骤1:开启apache服务

在这里插入图片描述

步骤2:页面布局

  <div class="box">
   <!-- 搜索框 -->
   <div class="searchArea">
    <input type="text" class="search" value="">
    <button class="goSearch">搜索</button>
   </div>
   <!-- 显示歌词列表 -->
   <div class="songsArea">
    <ul>
     <li></li>
    </ul>
   </div>
   <!-- 音频区域 -->
   <div class="audioArea">
    <audio src=""  controls="controls" autoplay="autoplay">
     当前浏览器不支持audio
    </audio>
   </div>
  </div>

步骤3:运行HTML文件

在apache目录下新建onlinemusic文件夹,在此文件夹新建index.html

在这里插入图片描述

在浏览器中输入:http://localhost:8080/onlinemusic/index.html
在这里插入图片描述

步骤3:利用Ajax搜索歌曲

  let search=document.getElementsByClassName('goSearch')[0]
  console.log(search)
  search.addEventListener('click',function(){
   let inputValue=document.getElementsByTagName('input')[0].value
   // console.log(inputValue)
   getMusic(inputValue);
   console.log('---end---')
  })
  function getMusic(songname){
   let xmlhttp=null;
   if (window.XMLHttpRequest) {
       // 用于现代浏览器的代码
        xmlhttp = new XMLHttpRequest();
    } else {
       // 应对老版本 IE 浏览器的代码
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open('GET','https://api.zsfmyz.top/music/list?p=1&n=30&w='+songname,true)
    xmlhttp.send()
    xmlhttp.onreadystatechange=function(){
     if(xmlhttp.readyState==4){
      if(xmlhttp.status==200||xmlhttp.status==304){
      //  console.log(JSON.parse(xmlhttp.responseText))
       let data=JSON.parse(xmlhttp.responseText)
       let songs=data.data.list
       console.log( songs)
       let songList=document.getElementById('songs')
       let str=''
      //  let oli=songList.createElement('li')
       for(let i=0;i<songs.length;i++){
       str+='<li>'+songs[i]['songname']+'--<span>'+songs[i]['singer'].name+'</span>'+'</li>'
       }
       songList.innerHTML=str
      }else{
       console.log('innerError')
      }
     }
    }
  }

在这里插入图片描述

步骤4:修改歌曲显示样式

模板字符串的使用

str+=`<li>
<span class="songname">${songs[i]['songname']}</span>--
<span class="singer">${songs[i]['singer'].name}</span>--
<span class="songmid">${songs[i]['songmid']}</span>
</li>`

获取span中样式visiblity为hidden的文本值

在这里插入图片描述

    oli=document.querySelectorAll('li')
    console.log(oli)
    for(let i=0;i<oli.length;i++){
     oli[i].onclick=function(e){
      e.stopPropagation()
      e.cancelBubble=true
      console.log(e.target.children[2].textContent)
      let songmid=e.target.children[2].textContent
      setTimeout(() => {
       getSongUrl(songmid)
      },1000)
     }
    }

在一行内显示,若超过一行则使用…来表示

   .songsArea li{
    font-size: 12px;
    height: 25px;
    width: 100%;
    line-height: 25px;
    white-space: nowrap;
    padding-left: 10px;
    border-bottom: 1px solid black;
   }
   li span{
    text-overflow:'...';
   }

步骤5:获取歌曲音源播放

// 根据歌曲id来获取音源
function getSongUrl(songmid){
    let oajax=null
    if(window.XMLHttpRequest){
        oajax=new XMLHttpRequest()
    }else{
        oajax=new ActiveXObject('Microsoft.XMLHTTP')
    }
    let url='https://api.zsfmyz.top/music/song?songmid='
    oajax.open('get',url+songmid+'&guid=126548448',true)
    oajax.send()
    oajax.onreadystatechange=function(){
        if(oajax.readyState==4){
            if(oajax.status==200||oajax.status==304){
    console.log(oajax.responseText)
    let data=JSON.parse(oajax.responseText)
    let musicUrl=data['data']['musicUrl']
    console.log(data)
    console.log(musicUrl)
    let audio=document.getElementsByTagName('audio')[0]
    audio.src=musicUrl
            }else{
                console.log('inn-Error')
            }
        }
    }
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值