题目1: ajax 是什么?有什么作用?
- ajax 的全称是Asynchronous JavaScript and XML,直译:异步 JavaScript 和 XML。
- ajax是使用XMLHttpRequest对象与服务器端通信的脚本语言。
- 可以无需刷新页面而与服务器端进行通信,可以发送及接收各种格式的信息,包括JSON、XML、HTML和文本文件。
题目2: 前后端开发联调需要注意哪些事情?后端接口完成前如何 mock 数据?
- 前后端开发联调需要注意哪些事情:
- 统一接口名称,统一命名,定制规范。
- 统一数据类型,统一数据大小等限制的确定。
- 统一接口的相关参数: url、端口、方法( get/post)、请求数据的类型。
- 按照上述确认后的版本严格执行。
- 后端接口完成前如何 mock 数据:
- 在本地搭建服务器后台,如使用nodejs等软件。
- 编写router.js文件模拟后端返回数据。
题目3:点击按钮,使用 ajax 获取数据,如何在数据到来之前防止重复点击?
防止数据到来之前防止重复点击,可以在XMLHttpRequest对象与后台服务器通信中进行条件判断,首先阻止默认事件,再设置一个标记变量值为true,判断节点设置在执行发送函数时,将标记变量值变为false,并在css或js中阻止执行发送函数(元素)生效,如果接收到后台服务器返回的数据则将标记变量的值还原为true,并使发送函数(元素)可被正常执行。
例子demo
var btn=document.querySelector('#btn')
var isLoad = true
btn.addEventListener("click",function(e){
e.preventDefault()
if(!isLoad){
return;//btn.classList.add(‘disabled’)
}
var xhr=new XMLHttpRequest()
xhr.onreadystatechange=function(){
if(readystate===4){
if(xhr.status === 200||xhr.status === 304){
/*var results = JSON.parse(xhr.responseText);
for (var i = 0; i < results.length; i++) {
var node = document.createElement('li')
node.innerText = results[i]
ct.appendChild(node)*/
isLoad = true
}
}
xhr.open('get',"/url",true)
xhr.send()
isLoad = false
//btn.classList.remove(‘disabled’)
}
})
题目4:实现加载更多的功能,效果范例296,后端在本地使用server-mock来模拟数据
//router.js
app.get('/loadMore', function (req, res) {
var idx = req.query.index
var len =req.query.length
var data = []
for(var i = 0;i<len ; i++){
data.push("内容"+(parseInt(idx)+i))
}
res.send(data)