8.8.1、回调地狱
<div id="app"></div> <h2>列表数据</h2> <p class="dp"></p> <audio src="" controls></audio> <script> /* 回调地狱 */ /* 1.华语中的第一条数据 */ var url ='http://192.168.4.18:3000/top/playlist/?cat=华语'; $.ajax({ url, success:res=>{ var {name,id} = res.playlists[0] $("#app").html(name) /* 2.列表页的数据 */ var listUrl = `http://192.168.4.18:3000/playlist/detail?id=${id}`; $.ajax({ url:listUrl, success:res=>{ var {name,id} = res.playlist.tracks[0] $(".dp").html(name) console.log(id) /* 3.根据id获取音乐播放的url链接 */ var musicUrl = `http://192.168.4.18:3000/song/url?id=${id}` $.ajax({ url:musicUrl, success:res=>{ let src = res.data[0].url; $("audio").attr("src",src) } }) } }) } })
8.8.2、ajax迭代
原生ajax
var url = "http://192.168.4.18:8000/" var xhr = new XMLHttpRequest(); xhr.open("get", url, true); xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { var result = JSON.parse(xhr.responseText); console.log(result) } }
回调函数封装ajax
function ajax(url,method="get",success) { var xhr = new XMLHttpRequest(); xhr.open(method, url, true); xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { var result = JSON.parse(xhr.responseText); success(result) } }}# 需要记住传参的顺序
function ajax({ url, method="get", success }) { var xhr = new XMLHttpRequest(); xhr.open(method, url, true); xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { var result = JSON.parse(xhr.responseText); success(result) } }}
jquery-ajax
$.ajax({ url:"http://192.168.4.18:8000/", type:"get", dataType:"json", success:res=>{ console.log(res) }})
callback封装jquery-ajax
function http({url,type="get",success}){ $.ajax({ url, type, dataType:"json", success:res=>{ success(rs) } })}
promise封装ajax
function http(url){ return new Promise((resolve,reject)=>{ $.ajax({ url, type:"get", success:res=>{ resolve(res) }, error:err=>{ reject(err); } }) })}