1.ajax 是什么?有什么作用?
Ajax(Asynchronous JavaScript + XML)是一种创建交互式网页应用的开发技术,利用Ajax可以向服务器请求额外的数据而无须卸载页面,会带来更好的用户体验。
Ajax应用程序的优势在于:
- 使用异步方式与服务器通信,不打断用户操作,不刷新页面
- 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
- Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。
- 几个点:
- Ajax通过JavaScript发送请求、接受服务器传来的数据,然后操作DOM将新数据对网页的某部分进行更新。
- Ajax的核心是XMLHttpRequest对象
- 传统的Web应用交互由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端, 每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。这个做法浪费了许多带宽,由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。
2. 前后端开发联调需要注意哪些事情?后端接口完成前如何 mock 数据?
前后端联调
- 请求的方式:get/post等
- 前端需要提供的数据
- 后端需要提供的数据
如何mock数据
- 使用nodejs搭建服务器,如安装server-mock,在需要mock数据的文件所在目录创建router.js文件,模拟后端接收数据,并返回数据
3.点击按钮,使用 ajax 获取数据,如何在数据到来之前防止重复点击?
思路:在发动请求后给函数加锁,忽略在此期间的点击;在请求成功后解锁
代码
说明
<body>
<ul class="ct"></ul>
<a href="#" class="btn" id="load-more">加载更多</a>
<script>
//1.设置一个状态,点击响应前忽略再次点击
var isLoading = true
btn.addEventListener('click',function(e){
//2.如果正在请求数据,忽略重复点击
if(!isLoading){
return
}
ajax('/loadMore', {
index: index,
len: len
}, function(data){
appendData(data)
isLoading = true //4.得到数据 解锁
index = index + len
})
isLoading = false //3.发送请求 加锁
})
function ajax(url,json,onSucess,onError){
//发送请求,请求成功执行onSucess()失败执行onError()
}
function appendData(data){
//操作DOM
}
</script>
</body>