1.ajax 是什么?有什么作用?
含义:AJAX = 异步 JavaScript 和 XML。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
作用:用户体验会更好。
缺点:
- ajax干掉了back按钮,即对浏览器后退机制的破坏。后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。这是ajax所带来的一个比较严重的问题,因为用户往往是希望能够通过后退来取消前一次操作的。那么对于这个问题有没有办法?答案是肯定的,用过Gmail的知道,Gmail下面采用的ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)但是,虽然说这个问题是可以解决的,但是它所带来的开发成本是非常高的,和ajax框架所要求的快速开发是相背离的。这是ajax所带来的一个非常严重的问题。
- 安全问题技术同时也对IT企业带来了新的安全威胁,ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于credentials的安全漏洞等。
- 对搜索引擎的支持比较弱。
- 破坏了程序的异常机制。至少从目前看来,像ajax.dll,ajaxpro.dll这些ajax框架是会破坏程序的异常机制的。5、另外,像其他方面的一些问题,比如说违背了url和资源定位的初衷。例如,有一个url地址,如果采用了ajax技术,也许在该url地址下面看到的和别人在这个url地址下看到的内容是不同的。这个和资源定位的初衷是相背离的。6、一些手持设备(如手机、PDA等)现在还不能很好的支持ajax,如手机的浏览器上打开采用ajax技术的网站时,它目前是不支持的。
2.前后端开发联调需要注意哪些事情?后端接口完成前如何 mock 数据?
- 接口叫什么?接口名称,统一命名,定制规范,甚至拟定命名表。
- 接口传什么?数据类型确定,数据大小等限制的确定。
- 接口的相关参数: 服务器?端口?方法?请求数据的一些限制?
按照上述确认后的版本严格执行
前端人员可以自己使用服务器框架搭建一个模拟服务器环境,比如使用express&nodejs或者使用xampp,更简单的办法是使用server-mock。
3.点击按钮,使用 ajax 获取数据,如何在数据到来之前防止重复点击?
使用一个全局变量的模拟锁 ,如下
var isLoading = true;
btn.addEventListener("click", function () {
if (!isLoading) {
return;
}
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200 || xhr.status === 304) {
...
}
...
} else {
...
}
isLoading = true;
}
}
xhr.open("get", "/getInfo?index=" + indexNum + "&length=5", true);
xhr.send();
isLoading = false;
}) //设置一个全局变量模拟锁为true;点击后数据到来前为赋值为false 等数据到了然后赋值为true